MySQL 5.5 作為經典穩定版本,至今仍在許多生產環境中運行。本文詳細記錄在 Linux 系統(以 Ubuntu 為例)下從源碼編譯安裝 MySQL 5.5 的完整流程,並重點解決編譯過程中常見的 OpenSSL 版本兼容性問題。
MySQL 5.5 開始使用 CMake 替代傳統的 configure 作為構建工具。Ubuntu 系統可直接使用包管理器安裝:
apt-get update && apt-get install -y cmake
若需編譯安裝特定版本 CMake,可參考以下步驟:
wget https://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
tar xzvf cmake-2.8.12.2.tar.gz
cd cmake-2.8.12.2
./configure
make && make install
安裝完成後執行 cmake --version 驗證版本。
wget https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.36.tar.gz
tar xzvf mysql-5.5.36.tar.gz
cd mysql-5.5.36
根據生產環境需求調整以下關鍵參數:
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/data/mysql
make && make install
編譯過程中報錯:
/root/mysql-5.5.36/vio/viossl.c:175: error: 'SSL_OP_NO_COMPRESSION' undeclared
MySQL 5.5 無法在 OpenSSL 1.0.0 及更低版本下正常編譯,因為新版 MySQL 代碼引用了舊版 OpenSSL 不存在的常量 SSL_OP_NO_COMPRESSION。
方案一:禁用 SSL 支持
在 cmake 參數中移除 -DWITH_SSL=system 或改為 -DWITH_SSL=no。
方案二:升級 OpenSSL(推薦)
將系統 OpenSSL 升級至 1.0.1 或更高版本。
方案三:應用官方補丁(最便捷)
在執行 cmake 前應用 MySQL 官方提供的補丁:
cd mysql-5.5.36
wget -c "https://bugs.mysql.com/file.php?id=19941&bug_id=68999" -O mysql-openssl.patch
patch -p1 < mysql-openssl.patch
應用補丁後重新執行 cmake 和 make 即可通過編譯。
cp support-files/my-medium.cnf /etc/my.cnf
sed -i '/skip-external-locking/a\datadir = /data/mysql' /etc/my.cnf
sed -i 's:#innodb:innodb:g' /etc/my.cnf
sed -i 's:/usr/local/mysql/data:/data/mysql:g' /etc/my.cnf
/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql
/etc/init.d/mysql start
/usr/local/mysql/bin/mysql -uroot -p -e "SELECT VERSION();"
# 輸出應顯示 5.5.36 版本信息
至此,MySQL 5.5 編譯安裝完成。建議後續配置防火牆規則、設置開機自啟動及 root 密碼等安全加固措施。