MySQL 5.5 版本起放棄傳統 configure 改用 CMake 作為構建系統。本文在 CentOS 6.5 64bit 環境下,記錄從系統準備、依賴安裝、源碼獲取、CMake 配置、編譯安裝、後續初始化到服務啟動的完整過程,供生產環境部署參考。
cat /etc/system-release # CentOS release 6.5 (Final) uname -a # Linux localhost 2.6.32-431.el6.x86_64 #1 SMP ... x86_64 x86_64 x86_64 GNU/Linux
useradd -M -s /sbin/nologin mysql # -M 不創建家目錄,-s /sbin/nologin 禁止登陸 grep mysql /etc/passwd grep mysql /etc/group
wget https://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.39.tar.gz # 或官網 https://downloads.mysql.com/archives/community/
yum -y install gcc gcc-c++ cmake ncurses-devel libtool zlib-devel # 關鍵:cmake 必須安裝,否則無法配置
CMake 簡介: 跨平台構建工具,生成標準 Makefile 或項目文件,不直接編譯,類似 Unix automake,配置文件為 CMakeLists.txt。
tar -xvf mysql-5.5.39.tar.gz cd mysql-5.5.39 ls # 關鍵目錄:cmake/ (包含 CMake 模組)
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql # 相當於舊版 ./configure --prefix=/usr/local/mysql # 更多常用選項: # -DDEFAULT_CHARSET=utf8 # -DDEFAULT_COLLATION=utf8_general_ci # -DWITH_INNOBASE_STORAGE_ENGINE=1 # -DWITH_PARTITION_STORAGE_ENGINE=1 # -DMYSQL_DATADIR=/usr/local/mysql/data # -DSYSCONFDIR=/etc
配置成功會顯示 -- Configuring done、-- Generating done。
make # 視 CPU 核心數可加速:make -j$(nproc) # 過程較久,耐心等待...
make install
文件安裝至 /usr/local/mysql。
chown mysql:mysql -R /usr/local/mysql/ # MySQL 進程以 mysql 用戶運行,需擁有數據目錄讀寫權
cd /usr/local/mysql ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
常見權限報錯: mysql_install_db 缺乏執行權限。解決:
chmod a+x ./scripts/mysql_install_db # 重新執行初始化命令
成功輸出包含 OK、Filling help tables 等提示。
cp support-files/my-medium.cnf /etc/my.cnf # 可選模板:my-small.cnf, my-medium.cnf, my-large.cnf, my-huge.cnf, my-innodb-heavy-4G.cnf # 根據服務器記憶體選擇,生產建議以 my-medium.cnf 為基礎調優
查看生效配置:
cat /etc/my.cnf | grep -v ^# | grep -v ^$
cp support-files/mysql.server /etc/init.d/mysqld chmod a+x /etc/init.d/mysqld
/etc/init.d/mysqld start ps aux | grep mysqld netstat -tunlp | grep 3306
確認進程存在且 3306 端口監聽。
echo 'PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile source /etc/profile mysql -u root -p # 登入測試
/usr/local/mysql/bin/mysql_secure_installation # 設置 root 密碼、移除匿名用戶、禁止 root 遠程登入、移除 test 庫、重新載入權限表
| 錯誤現象 | 原因分析 | 解決方案 |
|---|---|---|
Unknown CMake command "CHECK_LIBRARY_EXISTS" | CMake 版本過低(需 2.8+) | yum update cmake 或手動編譯安裝新版 CMake |
curses library not found | 缺少 ncurses-devel | yum install ncurses-devel |
zlib not found | 缺少 zlib-devel | yum install zlib-devel |
編譯中途報錯 internal compiler error | 內存不足(特別是小內存 VPS) | 添加 Swap 分區、減少並行度 make -j1 |
MySQL 5.5+ 源碼安裝核心差異在於 CMake 替代 configure。關鍵點:依賴包完整(特別是 cmake、ncurses、zlib)、CMake 參數正確、mysql_install_db 執行權限、my.cnf 模板選擇、啟動腳本部署、環境變量生效。編譯安裝可深度定制功能模組、優化編譯參數,適合對性能有極致要求或特殊架構的生產環境。