MySQL 5.5 引入 CMake 構建系統,取代舊版 Autotools。本文記錄在 Ubuntu/CentOS 上從源碼編譯安裝 MySQL 5.5.36 的完整流程,重點解決 OpenSSL 版本導致的編譯報錯。
# Ubuntu/Debian
apt-get update && apt-get install -y cmake build-essential libncurses5-dev
# CentOS/RHEL
yum install -y cmake gcc gcc-c++ ncurses-devel
# 或源碼編譯 CMake
wget https://cmake.org/files/v3.20/cmake-3.20.0.tar.gz
tar xzf cmake-3.20.0.tar.gz && cd cmake-3.20.0
./bootstrap && make && make install
驗證:cmake --version
# Ubuntu
apt-get install -y libssl-dev libaio-dev libncurses5-dev bison
# CentOS
yum install -y openssl-devel libaio-devel ncurses-devel bison
MySQL 5.5.36 在 OpenSSL 1.0.0 及以下版本編譯會報 SSL_OP_NO_COMPRESSION undeclared 錯誤。解決方案:應用官方補丁。
cd /usr/local/src
wget https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.36.tar.gz
tar xzf mysql-5.5.36.tar.gz
cd mysql-5.5.36
# 下載並應用補丁
wget -O mysql-openssl.patch "https://bugs.mysql.com/file.php?id=19941&bug_id=68999"
patch -p1 < mysql-openssl.patch
替代方案:升級系統 OpenSSL 至 1.0.1+,或編譯時禁用 SSL:-DWITH_SSL=bundled(使用內置 yaSSL)。
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DEXTRA_CHARSETS=all
make -j$(nproc) && make install
編譯時間視 CPU 核心數而定,通常 10-30 分鐘。
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mkdir -p /data/mysql /var/log/mysql /var/run/mysqld
chown -R mysql:mysql /usr/local/mysql /data/mysql /var/log/mysql /var/run/mysqld
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql
cp support-files/my-huge.cnf /etc/my.cnf
# 修改關鍵參數
sed -i '/^\[mysqld\]/a datadir = /data/mysql' /etc/my.cnf
sed -i 's/^#innodb_/innodb_/' /etc/my.cnf # 開啟 InnoDB 相關參數
# 根據內存調整 innodb_buffer_pool_size 等
cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig mysql on
service mysql start
/usr/local/mysql/bin/mysqladmin -u root password 'NewStrongPass123!'
/usr/local/mysql/bin/mysql_secure_installation
| 錯誤現象 | 原因 | 解決 |
|---|---|---|
| SSL_OP_NO_COMPRESSION undeclared | OpenSSL 版本過低 | 應用補丁、升級 OpenSSL 或用 -DWITH_SSL=bundled |
| curses library not found | 缺少 ncurses-devel | yum/apt 安裝 ncurses-devel |
| bison: command not found | 缺少 bison | 安裝 bison |
| make 過程中內存不足被 kill | 編譯並行度過高 | 減小 -j 參數或增加 swap |
/usr/local/mysql/bin/mysql -V
# mysql Ver 14.14 Distrib 5.5.36, for linux-glibc2.12 (x86_64)
/usr/local/mysql/bin/mysql -u root -p -e "SHOW ENGINES; SHOW VARIABLES LIKE 'version%';"
編譯安裝可精確控制功能模組、優化參數、安裝路徑,適合對性能與安全有嚴格要求的生產環境。關鍵點:OpenSSL 版本匹配、CMake 參數規範、數據目錄權限、mysql_upgrade 流程。生產部署建議配合配置管理工具實現冪等自動化。