MySQL 5.5 版本起改用 CMake 取代傳統 configure 進行編譯配置。本文記錄在 CentOS 6 環境下,從源碼包編譯安裝 MySQL 5.6.15 的完整流程,含依賴安裝、CMake 參數詳解、初始化、服務配置與安全加固。
| 項目 | 路徑 |
|---|---|
| 安裝路徑 | /usr/local/mysql |
| 資料目錄 | /data/mysql |
| 源碼存放 | /usr/software |
| 下載地址 | https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz |
# 基礎工具
yum install cmake make -y
# 核心編譯依賴(MySQL 5.6 最低需求)
yum install gcc gcc-c++ autoconf bison automake zlib* flex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* -y
cd /usr/software
tar -zxvf mysql-5.6.15.tar.gz
cd mysql-5.6.15
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306
-DWITH_INNOBASE_STORAGE_ENGINE=1make && make install
編譯時間視 CPU 核心數而定,建議使用 make -j$(nproc) 並行加速。
# 檢查用戶是否存在
cat /etc/passwd | grep mysql
cat /etc/group | grep mysql
# 不存在則建立
groupadd mysql
useradd mysql -g mysql -s /sbin/nologin
# 關鍵權限設定(必須執行)
cd /usr/local/mysql
chown mysql.mysql -R .
chown mysql.mysql -R /data/mysql
# 複製預設配置
cp support-files/my-default.cnf /etc/my.cnf
# 賦予安裝腳本執行權限
chmod 755 scripts/mysql_install_db
# 執行初始化(輸出大量 InnoDB 初始化日誌屬正常)
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/
# 複製啟動腳本
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
# 設定開機自啟
chkconfig --add mysqld
chkconfig mysqld on
# 啟動服務
service mysqld start
# 設定 root 密碼
/usr/local/mysql/bin/mysqladmin -u root password 'yourpassword'
# 登入清理匿名用戶與測試庫
/usr/local/mysql/bin/mysql -u root -p
mysql> USE mysql;
mysql> DELETE FROM user WHERE Password='';
mysql> FLUSH PRIVILEGES;
# 允許 root 遠程登入(生產環境建議建立專用帳號並限制 IP)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword';
mysql> FLUSH PRIVILEGES;
mysql> SELECT User, Password, Host FROM user;
mysql> QUIT
/usr/local/mysql/bin/mysql -u root -p -e "SELECT VERSION();"
# 輸出應包含 5.6.15
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/源碼編譯安裝雖步驟較多,但可精確控制功能模組、優化參數與安裝路徑,適合對效能與安全有嚴格要求的生產環境。