本文記錄在 CentOS 5.5 上從源碼編譯安裝 MySQL 5.5.9 的全過程,包含用戶創建、CMake 編譯參數、配置文件部署、服務註冊與常見編譯錯誤處理。
# 創建用戶與數據目錄 useradd -g mysql mysql3307 -s /bin/nologin -d /usr/local/mysql3307 mkdir -p /mysqldata/dirdata/mysql3307 chown -R mysql:mysql /mysqldata/dirdata/mysql3307 # 安裝 CMake 2.8.4 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
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
注意:MySQL 5.5+ CMake 不再支援 MYSQL_USER 參數,保留會導致警告「variable 'MYSQL_USER' was not used」,需移除該選項。
# 配置文件 cp support-files/my-medium.cnf /etc/my.cnf # 啟動腳本 cp support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld # 初始化數據庫(舊版腳本) ./scripts/mysql_install_db --user=mysql --ldata=/mysqldata/dirdata/mysql3307 # 啟動服務 /etc/init.d/mysqld start
CMake Warning: variable 'MYSQL_USER' not used → 移除 CMake 參數 -DMYSQL_USER=...ncurses-devel、bison、gcc-c++ 等依賴 → yum install -y ncurses-devel bison gcc-c++mysql_install_db 失敗 → 確保數據目錄屬主為 mysql 用戶