Ubuntu 16.04下 Mysql5.7.17原始碼編譯與安裝

有事找周文發表於2018-08-15

Ubuntu 16.04下 Mysql5.7.17原始碼編譯與安裝

系統環境

ubuntu 16.04 64位

官方文件說明:http://dev.mysql.com/doc/refman/5.7/en/source-installation.html

一、 系統安裝條件

1.cmake

MySQL使用cmake跨平臺工具預編譯原始碼,用於設定mysql的編譯引數。

sudo apt-get install cmake

  • 1

2.bison

Linux下C/C++語法分析器

sudo apt-get install bison

  • 1

3.ncurses

字元終端處理庫

sudo apt-get install libncurses5-dev

  • 1

4. gcc

GCC是Linux下的C語言編譯工具,mysql原始碼編譯完全由C和C++編寫。Ubuntu預設已裝。

5. Boost 1.59.0

mysql原始碼中用到了C++的Boost庫,要求必須安裝boost1.59.0

下載Boost1.59.0原始碼,並解壓到/usr/local/目錄下:

wget -O https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gztar -zxvf boost_1_59_0.tar.gz -C /usr/local/

  • 1
  • 2

二、 下載MySQL原始碼

從github上下載mysql的原始碼

https://github.com/mysql/mysql-server.git

三、 編譯MySQL原始碼

1. 新增Mysql使用者

groupadd mysqluseradd -r-g mysql mysql

  • 1
  • 2

2. 建立Mysql安裝程式的目錄和資料檔案的目錄

mkdir /usr/local/mysqlmkdir /home/MysqlDatachown -R mysql.mysql /user/local/mysqlchown -R mysql.mysql /home/MysqlData

  • 1
  • 2
  • 3
  • 4

3. 解壓縮Mysql5.7原始碼,並編譯

tar -zxvf mysql-server-5.7.zipcd mysql-server-5.7

  • 1
  • 2

用cmake配置mysql預編譯引數:

-DCMAKE_INSTALL_PREFIX:安裝路徑

-DMYSQL_DATADIR:資料存放目錄

-DWITH_BOOST:boost原始碼路徑

-DSYSCONFDIR:my.cnf配置檔案目錄

-DEFAULT_CHARSET:資料庫預設字元編碼

-DDEFAULT_COLLATION:預設排序規則

-DENABLED_LOCAL_INFILE:允許從本檔案匯入資料

-DEXTRA_CHARSETS:安裝所有字符集

更多預編譯配置引數請參考mysql官方文件說明:http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html#cmake-general-options

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/home/MysqlData \-DWITH_BOOST=/usr/local/boost_1_59_0 \-DSYSCONFDIR=/etc \-DEXTRA_CHARSETS=all

  • 1
  • 2
  • 3
  • 4
  • 5

編譯並安裝(兩個命令分開進行):

sudo makesudo make install

  • 1
  • 2

三、 安裝配置MySQL

1. 初始化Mysql資料庫

cd/usr/local/mysql./bin/mysql_install_db--user=mysql--basedir=/usr/local/mysql--datadir=/home/MysqlData#5.7.6之後版本初始系統資料庫指令碼(本文使用上種方式)./bin/mysqld--initialize-insecure--user=mysql--basedir=/usr/local/mysql--datadir=/home/MysqlData./bin/mysql_ssl_rsa_setup

  • 1
  • 2
  • 3
  • 4
  • 5

注意:如果使用–initialize引數初始化系統資料庫之後,會在~/.mysql_secret檔案中生成root使用者的一個臨時密碼,同時也在初始化日誌中列印出來了

2.配置檔案

cp support-files/my-default.cnf /etc/my.cnfvim /etc/my.cnf[client]port=3306socket=/usr/local/mysql/mysql.sock[mysqld]port=3306basedir=/usr/local/mysqldatadir=/home/MysqlDatasocket=/usr/local/mysql/mysql.sockpid-file=/usr/local/mysql/mysql.pidmax_connections=500default-storage-engine=MYISAM

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3.配置Mysql服務

由於Ubuntu沒有chkconfig命令,用update-rc.d命令將Mysql服務加入到系統服務中。

cp support-files/mysql.server /etc/init.d/mysqlupdate-rc.d mysql defaultsupdate-rc.d mysql start 2345 . stop 016

  • 1
  • 2
  • 3

4.啟動Mysql服務

shell> service mysqld start # 啟動mysql服務shell> service mysqld stop # 停止mysql服務shell> service mysqld restart # 重新啟動mysql服務

  • 1
  • 2
  • 3

5.設定資料庫密碼

my.cnf中加上一行skip-grant-tables

免密登入後修改user表

再去掉skip-grant-tables,重啟Mysql

6.配置mysql環境變數

shell> vim /etc/profileshell> export PATH=/usr/local/mysql/bin:$PATHshell> source /etc/profile

  • 1
  • 2
  • 3

四、其它注意事項

如果中途編譯失敗了,需要刪除cmake生成的預編譯配置引數的快取檔案和make編譯後生成的檔案,再重新編譯。

shell> cd mysql-server-5.7shell> rm -f CMakeCache.txtshell> make clean

相關文章