在Linux系統下源碼安裝mysql5.7.17教程

一、前言

本文檔內容包含在redhat, centos等linux系統下通過源碼安裝mysql5.7的幫助說明; 本文檔包含在同一臺系統上安裝多個mysql的幫助說明;

二、源碼安裝MYSQL

前提:以下步驟請都用root用戶或擁有管理員權限的用戶來執行

2.1 安裝依賴包

[root@ver ~]# yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison

2.2 安裝boost庫

mysql源碼編譯時要用到boost(網上說高於此版本或低於此版本的都不行,我沒有驗證,僅在此提出)

# 下載源碼:地址一  
[root@ver ~]# wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz  
# 下載源碼:地址二  
https://pan.baidu.com/s/1dFxqb2h  

# 解壓boost  
[root@ver ~]# tar -zxvf boost_1_59_0.tar.gz  
# 移動到/usr/local目錄  
[root@ver ~]# mv boost_1_59_0 /usr/local/boost  

2.3 添加mysql用戶

[root@ver ~]# useradd mysql  

2.4 源碼安裝mysql

# 下載源碼(5.7.17版本),用瀏覽器打開,獲取真實下載地址  
https://pan.baidu.com/s/1cqA9H0  

# 解壓  
[root@ver ~]# tar -zxvf mysql-5.7.17.tar.gz  

# 編譯  
[root@ver ~]# cd mysql-5.7.17  

[root@ver ~]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost  

[root@ver ~]# make && make install  

註意:
1. 上面步驟中填寫的路徑會在安裝完成後的/usr/local/mysql/support-files/mysql.server腳本中體現;  
2. 如果會用到Emoji表情符號,請將上面的utf8修改為utf8mb4;  
3. 如果本機已經存在瞭其餘mysql實例,請修改端口號,避免沖突,比如改為3316;  
4. 如果本機已經存在瞭其餘mysql實例,請確保上面填寫的/usr/local/mysql路徑沒有被占用,如果已經被占用請換個其餘路徑;

2.5 初始化資料庫

[root@ver ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data  

註意:此條語句執行時容易報錯,成功至少要滿足以下幾個條件
1. /usr/local/mysql/data目錄存在並且一定要為空目錄,否則報錯;
2. 如果本機已經存在瞭其餘的mysql,請確實/etc/my.cnf文件不存在,否則會按照/etc/my.cnf中的設置進行初始化,datadir會讀取另一個mysql實例的路徑,從而導致報錯。遇到此情況,可以先將已經存在的mysql實例停止,然後將/etc/my.cnf文件剪切到此實例對應的datadir目錄中,再啟動此實例,然後重新執行初始化命令;
3. 上面語句初始化成功後會在控制臺打印臨時管理員密碼,如下:

2017-10-11T10:04:44.378722Z 1 [Note] A temporary password is generated for root@localhost: 2wp?fPp33/Hw

2.6 設置配置文件

[root@ver ~]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

註意:
1. 根據實際需要設置my.cnf文件;
2. 如果本機已經存在瞭其餘mysql實例,請將my.cnf文件放置到datadir對應的目錄,確保/etc/my.cnf文件不存在,否則會影響到另一個mysql實例;

mysql配置文件讀取路徑順序為:
/etc/my.cnf
/etc/mysql/my.cnf
basedir/my.cnf
datadir/my.cnf
–defaults-extra-file
~/.my.cnf
註意
1. 如果使用./bin/mysqld_safe 守護進程啟動mysql資料庫時,使用瞭 –defaults-file=<配置文件的絕對路徑>參數,這時隻會使用這個參數指定的配置文件。
2. 如果以上幾個文件都存在,則會最後讀取的配置會覆蓋前面讀取的

2.7 啟動mysql

[root@ver ~]# cd /usr/local/mysql/support-files
[root@ver ~]# ./mysql.server start

# 將啟動腳本做成服務
[root@ver ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@ver ~]# service mysqld status
MySQL running (16395)                                      [  OK  ]

註意:如果本機已經存在瞭其餘的mysql服務,則復制時文件名要註意區分:如改為/etc/init.d/mysqld2

2.8 修改臨時管理員密碼

# 輸入步驟2.5中生成的臨時密碼:2wp?fPp33/Hw
[root@ver ~]# mysql -h 127.0.0.1 -u root -p       
# 修改管理員密碼
alter user 'root'@'localhost' identified by '123456';

 

You May Also Like