MySQL 5.5 起構建系統從 Autotools (configure) 遷移至 CMake,本文記錄在 CentOS 5.5 上編譯安裝 MySQL 5.5.9 單實例的完整步驟,含 CMake 安裝、關鍵編譯參數、獨立數據目錄規劃、配置文件與啟動腳本部署、常見編譯報錯修復。
# 1. 創建運行用戶 useradd -g mysql -s /sbin/nologin -d /usr/local/mysql3307 mysql3307 # 2. 獨立數據目錄(掛載獨立磁盤/分區最佳) mkdir -p /mysqldata/dirdata/mysql3307 chown -R mysql3307:mysql3307 /mysqldata/dirdata/mysql3307
cd /opt wget https://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz tar zxvf cmake-2.8.4.tar.gz cd cmake-2.8.4 ./configure && make install # 驗證 cmake --version # 2.8.4
cd /opt tar zxvf mysql-5.5.9.tar.gz cd mysql-5.5.9 cmake . \ -DCMAKE_INSTALL_PREFIX=/mysqldata/mysql3307 \ -DMYSQL_DATADIR=/mysqldata/dirdata/mysql3307 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_TCP_PORT=3307 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DMYSQL_UNIX_ADDR=/mysqldata/dirdata/mysql3307/mysql.sock \ -DMYSQL_USER=mysql3307 \ -DWITH_DEBUG=0 make -j$(nproc) make install
關鍵參數說明:
CMAKE_INSTALL_PREFIX:程式碼安裝根目錄(二進制、庫、include)。MYSQL_DATADIR:數據文件目錄(.ibd、.frm、redo/undo log)。MYSQL_TCP_PORT:服務監聽端口。MYSQL_UNIX_ADDR:Unix Socket 文件路徑。DEFAULT_CHARSET/COLLATION:預設字符集/校對集,避免 latin1 亂碼。# 1. 複製配置模板 cp support-files/my-medium.cnf /etc/my.cnf # 編輯 /etc/my.cnf 確認 [mysqld] 區段包含上述 port、socket、datadir、basedir # 2. 複製並授權啟動腳本 cp support-files/mysql.server /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld # 3. 註冊服務 chkconfig --add mysqld chkconfig mysqld on
# 進入安裝目錄執行初始化腳本 cd /mysqldata/mysql3307 ./scripts/mysql_install_db --user=mysql3307 --ldata=/mysqldata/dirdata/mysql3307 # 啟動 /etc/init.d/mysqld start # 驗證 netstat -ntlp | grep 3307 /mysqldata/mysql3307/bin/mysql -uroot -p -S /mysqldata/dirdata/mysql3307/mysql.sock -e "SHOW VARIABLES LIKE 'version';"
| 報錯現象 | 原因 | 修復 |
|---|---|---|
CMake Warning: variable 'MYSQL_USER' not used | CMake 變量名大小寫敏感,實際變量為 MYSQL_USER 但腳本內部用 INSTALL_LAYOUT 控制 | 移除 -DMYSQL_USER=... 參數,改用 -DINSTALL_LAYOUT=STANDALONE 或接受默認 |
curses.h not found | 缺少 ncurses-devel | yum install ncurses-devel -y |
bison not found | 缺少 bison | yum install bison -y |
g++ not found | 缺少 gcc-c++ | yum install gcc-c++ -y |