源代碼安裝 MySQL 5.6.28

来源:http://www.cnblogs.com/liuning8023/archive/2016/02/03/5179409.html
-Advertisement-
Play Games

本文內容 創建 MySQL 用戶和組 解壓 MySQL 源代碼包 生成配置安裝文件 編譯和安裝 MySQL 配置文件 創建 MySQL 授權表 授權 啟動 MySQL 驗證安裝 設置訪問許可權 MySQL 開機自動啟動 最近做項目,出了一個事:之前我是用 Oracle 的,如果在 Windows 環境


本文內容

  • 創建 MySQL 用戶和組
  • 解壓 MySQL 源代碼包
  • 生成配置安裝文件
  • 編譯和安裝
  • MySQL 配置文件
  • 創建 MySQL 授權表
  • MySQL 目錄授權
  • 啟動 MySQL
  • 驗證 MySQL 安裝
  • 設置 MySQL 訪問許可權
  • MySQL 開機自動啟動
  • 設置環境變數
  • 參考資料

最近做項目,之前我是用 Oracle 的,如果在 Windows 環境,無論是安裝,還是配置,都很容易;Linux 環境沒試過,剛畢業時的那個公司,是 Linux 環境。一般等到開發的時候,資料庫早按完了,這活輪不到開發乾。現在,跳槽後,公司用 MySQL~遇到兩個問題:

  • 1,對一個包含二進位欄位的表,開發環境和測試環境的性能差異巨大,都是虛擬機。開發環境,Windows 平臺,執行 INSERT 很快,幾毫秒的事;而測試環境,Linux 平臺,執行 INSERT 慢到有點說不過去了,幾十毫秒,差距將近 30 倍。如果是 Oracle,前期的話,即便什麼不做,也很快;

網上有些人告訴我,應該查看一下機器的負載,比如,磁碟、IO 等,我倒是想,也不是產品環境,不至於差異這麼大吧,並且一直就沒快過~

  • 2,產品環境,70W 數據,執行 SELECT * FROM T1 WHERE FLAG=0 ORDER BY ID ASC,如果不為 FLAG 欄位建索引,執行時間都快 1 秒啦。這要是在 Oracle 上,絕對不可能發生~

這促使我自己在 Linux 上安裝 MySQL 源代碼。沒事時,練習、研究一下~

用源代碼方式安裝的好處是,編譯時,可以針對自己的硬體環境。只是安裝相比 RPM 要麻煩點,不過“會者不難,難者不會”,多練練就好了~

期間,最開始用的是 RPM 包,挺容易,嘗試了 Percona 和社區版,最後,又用源代碼安裝了一遍~

本文是以 MySQL 源代碼方式進行安裝。參考眾多資料,折騰好幾天,總算安上了~如果安裝時,缺少必要的包,就用 yum 安裝,比如 cmake、perl 等~

創建 MySQL 用戶和組


這步的目的,是執行 mysql_install_db 創建 MySQL 授權表,以及啟動 MySQL 時,都需要指定用戶名。所以,它是第一步。

  • 第一步:為以後的 MySQL 服務 mysqld 增加一個登錄的用戶和組,用戶名和組名均為“mysql”。如果用了其他名稱,在後面的操作中也要替換。
[root@vcyber usr]# groupadd mysql
 
[root@vcyber usr]# useradd -g mysql mysql

解壓 MySQL 源代碼包


假設你把 MySQL 源代碼包放在 /usr/local/src 目錄下。

  • 第二步:解壓 mysql 軟體包。
[root@vcyber /]# cd /usr/local/src
 
[root@vcyber src]# ls
 
mysql-5.6.28.tar.gz
 
[root@vcyber src]# tar zxf mysql-5.6.28.tar.gz
 
[root@vcyber src]# ls
 
mysql-5.6.28  mysql-5.6.28.tar.gz
 
[root@vcyber src]#

此時,會看見一個新目錄 mysql-5.6.28。

其中,解壓時,-x 為解壓;-z 為包有gzip屬性;-f 為使用檔案名字。當然,也可以用 -v 顯示解壓過程。

生成配置安裝文件


以下兩步任選其一,MySQL 早期版本,提供 Configure 文件以便在編譯安裝前進行配置;但在高版本已不提供該文件,而是採用 cmake。

假設,MySQL 安裝到 /usr/local/mysql 下。

  • 第三步:
    • 使用“Configure”命令配置安裝需要的系統環境,並生成安裝配置文件

[root@vcyber mysql-5.6.28]# ./configure \
> --prefix=/usr/local/mysql \
> --with-extra-charsets=all

如果採用 cmake 就跳過這步。

    • 使用“cmake”配置安裝需要的系統環境,並生成安裝配置文件

[root@vcyber mysql-5.6.28]# cmake \
> -DDEFAULT_CHARSET=utf8 
> -DDEFAULT_COLLATION=utf8_general_ci 
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DEXTRA_CHARSETS=all 

指定 MySQL 的安裝位置為“/usr/local/mysql”,以及採用的預設字元集等。

我在試驗時,如果不配置字元集的相關選項,在執行後面 mysql_install_db  那步時會報各種字元集錯誤。

cmake 具體參數,參看 MySQL Source-Configuration Options

編譯和安裝


編譯和安裝很簡單。

  • 第四步:使用“make”命令編譯源代碼文件,並生成安裝文件,再用“make install”命令安裝。
[root@vcyber mysql-5.6.28]# make && make install
或是編譯與安裝分開執行:
[root@vcyber mysql-5.6.28]# make 
[root@vcyber mysql-5.6.28]# make install

自此,MySQL 就會安裝到 /usr/local/mysql 下。

MySQL 配置文件


  • 第五步:創建 MySQL 資料庫伺服器的配置文件,可以使用源代碼包 support-files 目錄中的 my-default.cnf 文件作為模板,將其複製到 /etc/ 目錄下,重命名為“my.cnf”文件。
[root@vcyber /]# cd /usr/local/src/mysql-5.6.28
[root@vcyber mysql-5.6.28]# cp support-files/my-default.cnf  /etc/my.cnf

並用 vi /etc/my.cnf 修改該配置文件,內容如下。

[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
sock = /tmp/mysql.sock

模板文件不只是源代碼中有,安裝目錄中也有。

創建 MySQL 授權表


  • 第六步:如果還沒安裝過 MySQL,必須創建 MySQL 授權表。進入安裝目錄(/usr/local/mysql)下,執行 bin 目錄下的 mysql_install_db 腳本,初始化 MySQL 資料庫的授權表,其中,存儲了伺服器訪問允許。

當 MySQL 發生故障或需要新加一個 mysql 實例時,需要初始化 mysql 資料庫。使用 --help 可以查看支持的選項。

[root@vcyber mysql]# cd /usr/local/mysql
 
root@vcyber mysql]# scripts/mysql_install_db --user=mysql
 
Installing MySQL system tables...2016-02-02 02:42:33 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-02-02 02:42:33 0 [Note] ./bin/mysqld (mysqld 5.6.28) starting as process 28034 ...
2016-02-02 02:42:33 28034 [Note] InnoDB: Using atomics to ref count buffer pool pages
2016-02-02 02:42:33 28034 [Note] InnoDB: The InnoDB memory heap is disabled
2016-02-02 02:42:33 28034 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-02-02 02:42:33 28034 [Note] InnoDB: Memory barrier is not used
2016-02-02 02:42:33 28034 [Note] InnoDB: Compressed tables use zlib 1.2.3
2016-02-02 02:42:33 28034 [Note] InnoDB: Using Linux native AIO
2016-02-02 02:42:33 28034 [Note] InnoDB: Using CPU crc32 instructions
2016-02-02 02:42:34 28034 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2016-02-02 02:42:34 28034 [Note] InnoDB: Completed initialization of buffer pool
2016-02-02 02:42:34 28034 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
 
……
 

如果用 root 用戶運行上面的命令,應該使用 --user 選項,選項的值應與你在第一步為運行伺服器所創建的登錄賬戶(本例是 mysql 用戶)相同。如果用 mysql 用戶登錄,運行上面命令,可以忽略 --user 選項。

mysql_install_db 創建 MySQL 授權表後,需要手動重新啟動伺服器。

如果執行這步時報錯,說明你的第三步有問題。

MySQL 目錄授權


  • 第七步:將 MySQL 安裝目錄 bin 目錄下執行文件的所有權改為 root 用戶,數據目錄的所有權改為運行 mysqld 程式的 mysql 用戶。如果現在位於安裝目錄(/usr/local/mysql)下,命令行如下。
[root@vcyber mysql-5.6.28]# cd /usr/local/mysql
[root@vcyber mysql]# pwd
/usr/local/mysql
[root@vcyber mysql]# chown -R root .
[root@vcyber mysql]# chown -R mysql data
[root@vcyber mysql]# chgrp -R mysql .
[root@vcyber mysql]# ls -l
total 180
drwxr-xr-x  2 root  mysql   4096 Feb  2 02:23 bin
-rw-r--r--  1 root  mysql  17987 Nov 16 17:38 COPYING
drwxr-xr-x  5 mysql mysql   4096 Feb  2 09:20 data
drwxr-xr-x  2 root  mysql   4096 Feb  2 02:23 docs
drwxr-xr-x  3 root  mysql   4096 Feb  2 02:23 include
-rw-r--r--  1 root  mysql 105684 Nov 16 18:45 INSTALL-BINARY
drwxr-xr-x  3 root  mysql   4096 Feb  2 02:23 lib
drwxr-xr-x  4 root  mysql   4096 Feb  1 08:45 man
-rw-r--r--  1 root  mysql    943 Feb  1 08:46 my.cnf
-rw-r--r--  1 root  mysql    943 Feb  2 02:42 my-new.cnf
drwxr-xr-x 10 root  mysql   4096 Feb  1 08:45 mysql-test
-rw-r--r--  1 root  mysql   2496 Nov 16 17:38 README
drwxr-xr-x  2 root  mysql   4096 Feb  1 08:45 scripts
drwxr-xr-x 28 root  mysql   4096 Feb  1 08:45 share
drwxr-xr-x  4 root  mysql   4096 Feb  1 08:45 sql-bench
drwxr-xr-x  2 root  mysql   4096 Feb  1 08:45 support-files
[root@vcyber mysql]#

註意第三列的變化。另外,

  • “chown –R root .”,將文件的所有屬性改為 root 用戶。註意那個點,表示所有文件;
  • “chown –R mysql data”,將數據目錄的所有屬性改為 mysql 用戶;
  • “chgrp –R mysql .”,將組屬性改為 mysql 組。註意那個點,表示所有文件。

啟動 MySQL


到目前為止,所有需要的東西都安裝完成,可以啟動 MySQL 服務了。

  • 第八步:啟動 MySQL。當然,你可以讓 MySQL 開機時自動運行,後面介紹。
[root@vcyber ~]# cd /usr/local/mysql
[root@vcyber mysql]# bin/mysqld_safe --user=mysql
[root@vcyber mysql]#

驗證 MySQL 安裝


下麵,驗證一下,MySQL 服務是否正常。

  • 第九步:MySQL 資料庫服務啟動後,查看一下它的埠 3306 是否打開,如果看到以下結果表明 MySQL 服務啟動成功了。
[root@vcyber mysql]# netstat -tnl | grep 3306
tcp        0      0 :::3306                     :::*                        LIST                                                                                                 EN
[root@vcyber mysql]#
  • 第十步:使用 mysqladmin 驗證伺服器是否運行中。以下命令提供了簡單的測試,檢查伺服器是否已經啟動並能響應連接。
[root@vcyber mysql]# pwd
/usr/local/mysql
[root@vcyber mysql]# bin/mysqladmin version
bin/mysqladmin  Ver 8.42 Distrib 5.6.28, for Linux on x86_64
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Server version          5.6.28
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /tmp/mysql.sock
Uptime:                 9 min 7 sec
 
Threads: 1  Questions: 9  Slow queries: 0  Opens: 67  Flush tables: 1  Open tables: 60  Queries per second avg: 0.016
[root@vcyber mysql]#
[root@vcyber mysql]# bin/mysqladmin variables
+--------------------------------------------------------+----------------------------------------------------------------------------------+
	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 現在最火的android開發框架 簡單描述一下 這一篇簡單描述尋找控制項以及事件的使用 1.該方法可以不用寫setconteview @EActivity(R.layout.activity_main)public class MainActivity extends Activity { 2.尋找控
  • 1、eclipse關聯源碼 步驟一:自已百度下載相應版本的源碼,我這裡是4.2也就是API=17的版本。 步驟二:找到你安裝sdk的目錄, G:\Program Files\adt-bundle-windows-x86\sdk\platforms\android-4.2 步驟三:在這個目錄下新建一個
  • 通訊錄導航欄源碼: 1.activity 1 package com.anna.contact.activity; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 7 imp
  • iPhone中GPS定位如何使用 關鍵詞 1.info.plist配置授權描述 2.引入庫 3.CLLocationManager的使用 info.plist配置 在info.plist中根據情況加入以下兩個string類型配置項,並填寫描述 1.NSLocationAlwaysUsageDescr
  • 緣由: 平時工作,因為懶於動筆的原因,也沒註重技術和經驗的積累,導致之前曾經研究過的問題現在又忘記了,所以要慢慢註重積累,那麼就從寫作開始,談談對工作中碰到的問題進行整理和歸納。 我們都知道,在Android中,想處理事件傳遞,可以用Handler+MessageQueue+Message+Loop
  • STPopup 為 iPhone 和 iPad提供了 STPopupController UINavigationController 彈出的風格。 特性: Extend your view controller from UIViewController, build it in your fam
  • 筆記,listview視圖總結 1 public class HomeEduMoreAdapter extends BaseAdapter { 2 3 private final String TAG = "HomeEduMoreAdapter"; 4 5 private static final
  • 1 package com.gzcivil.utils; 2 3 /** 4 * 同StringBuffer 5 * 6 * @author Dragon 7 * @time 2013-3-1 8 */ 9 public class StrBuffer { 10 private StringBuff
一周排行
    -Advertisement-
    Play Games
  • 基於.NET Framework 4.8 開發的深度學習模型部署測試平臺,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等應用場景,同時支持圖像與視頻檢測。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runti... ...
  • 十年沉澱,重啟開發之路 十年前,我沉浸在開發的海洋中,每日與代碼為伍,與演算法共舞。那時的我,滿懷激情,對技術的追求近乎狂熱。然而,隨著歲月的流逝,生活的忙碌逐漸占據了我的大部分時間,讓我無暇顧及技術的沉澱與積累。 十年間,我經歷了職業生涯的起伏和變遷。從初出茅廬的菜鳥到逐漸嶄露頭角的開發者,我見證了 ...
  • C# 是一種簡單、現代、面向對象和類型安全的編程語言。.NET 是由 Microsoft 創建的開發平臺,平臺包含了語言規範、工具、運行,支持開發各種應用,如Web、移動、桌面等。.NET框架有多個實現,如.NET Framework、.NET Core(及後續的.NET 5+版本),以及社區版本M... ...
  • 前言 本文介紹瞭如何使用三菱提供的MX Component插件實現對三菱PLC軟元件數據的讀寫,記錄了使用電腦模擬,模擬PLC,直至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1. PLC開發編程環境GX Works2,GX Works2下載鏈接 https:// ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • 1、jQuery介紹 jQuery是什麼 jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝 ...
  • 前言 之前的文章把js引擎(aardio封裝庫) 微軟開源的js引擎(ChakraCore))寫好了,這篇文章整點js代碼來測一下bug。測試網站:https://fanyi.youdao.com/index.html#/ 逆向思路 逆向思路可以看有道翻譯js逆向(MD5加密,AES加密)附完整源碼 ...
  • 引言 現代的操作系統(Windows,Linux,Mac OS)等都可以同時打開多個軟體(任務),這些軟體在我們的感知上是同時運行的,例如我們可以一邊瀏覽網頁,一邊聽音樂。而CPU執行代碼同一時間只能執行一條,但即使我們的電腦是單核CPU也可以同時運行多個任務,如下圖所示,這是因為我們的 CPU 的 ...
  • 掌握使用Python進行文本英文統計的基本方法,並瞭解如何進一步優化和擴展這些方法,以應對更複雜的文本分析任務。 ...
  • 背景 Redis多數據源常見的場景: 分區數據處理:當數據量增長時,單個Redis實例可能無法處理所有的數據。通過使用多個Redis數據源,可以將數據分區存儲在不同的實例中,使得數據處理更加高效。 多租戶應用程式:對於多租戶應用程式,每個租戶可以擁有自己的Redis數據源,以確保數據隔離和安全性。 ...