一直嫌棄 MySQL 的編譯安裝,原因很簡單,依賴復雜、容易出錯,總之就是麻煩。但這些天由於需要必須編譯安裝,被迫閱讀相關文檔,發現現在的 MySQL 安裝變得十分簡單和容易。
直接開始吧。
一切從必要依賴開始。
yum install -y gcc gcc-c++ ncurses-devel perl
本文中系統為 CentOS 7,不同系統的軟件包管理器可能用法不同,但需求類似,請准備好 gcc gcc++ ncurses 及 perl 相關編譯器或依賴庫即可。
必要的文件准備:
mysql 5.7.10 (include boost headers) http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.10.tar.gz
cmake 3.4.1 https://cmake.org/files/v3.4/cmake-3.4.1.tar.gz
首先需要安裝 cmake,因此解壓剛剛下載的 cmake 3.4.1 編譯安裝,步驟如下:
tar -xzvf cmake-3.4.1.tar.gz
cd cmake-3.4.1
./bootstrap
make && make install
安裝完 cmake,就開始著手 MySQL 編譯安裝的步驟。首先為添加 MySQL 對應的系統賬戶,用於保證其本地文件權限分配:
groupadd mysql
useradd -r -g mysql mysql
創建數據庫目錄:
mkdir -p /var/mysql/data
chown mysql:mysql /var/mysql/data
開始准備編譯安裝,解壓 mysql-boost-5.7.10.tar.gz 並進入其解壓後的 mysql-5.7.10 目錄,在該目錄下執行:
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/var/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DWITH_BOOST=boost
除了上述參數,編譯安裝的參數還有很多很多,若需要了解每一個參數的具體含義或者參數的默認值,可以到 MySQL 官網的文檔裡查閱,在此給出這一版本的查閱地址: http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
執行完 cmake 的配置過程,就需要開始准備最為 漫長的 的編譯過程,根據不同機器的配置,時間大約在 2 小時左右(低配情況下 4 小時以上也是可能的)。執行編譯和安裝操作已經很熟悉了: make && make install。
好的,進行完以上步驟,首先需要改變 mysql 安裝目錄的所有者,比如我們安裝的目錄是 /usr/local/mysql,使用命令
chown -R mysql:mysql /usr/local/mysql
修改目錄所有者。此時,復制一份默認配置文件
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
如果提示已存在文件是否覆蓋時,覆蓋即可。
然後執行數據庫的初始化操作,
/usr/local/mysql/bin/mysqld --initialize --user=mysql,
這時候會初始化數據庫並創建一個數據庫 root 賬號,但是要注意,和以前不一樣的是,這個賬號是有默認密碼的,初始化的時候屏幕上會輸出初始化的密碼,如果錯過了,可以通過查看 /root/.mysql_secret 即可看到默認的密碼。
執行 cp /usr/local/mysql/support-files/mysql.server /etc/init.d,將 mysql 的服務啟動腳本復制過去,然後執行 service mysql.server start 啟動 mysql。
最後 /usr/local/mysql/bin/mysql -r root -p,輸入密碼回車,通過
set password=password('你的密碼');
來修改默認密碼
至此,基本的安裝流程完畢!你可以根據需要,將 mysql 加入開啟啟動,也可以將 /usr/local/mysql/bin 下的文件加入 PATH 環境變量,更多使用方式可以參考官方文檔,寫的十分細致。