適用場景
- 無 RPM/DEB 包管理器的系統。
- 需自定義編譯參數(字符集、插件、路徑)。
- 學習 MySQL 內部構建過程。
生產環境建議:優先使用官方預編譯二進制包或發行版倉庫,經過充分測試、安全更新及時。
14 步極簡安裝流程
- 下載源碼包:
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.xx.tar.gz
- 解壓:
tar zxvf mysql-5.7.xx.tar.gz && cd mysql-5.7.xx
- 安裝依賴 (CentOS/RHEL):
yum install -y cmake gcc gcc-c++ ncurses-devel bison openssl-devel
- 創建用戶組:
groupadd mysql && useradd -r -g mysql -s /bin/false mysql
- 配置編譯參數:
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system
- 編譯安裝:
make -j$(nproc) && make install
- 修改目錄權限:
chown -R mysql:mysql /usr/local/mysql /data/mysql
- 初始化數據目錄 (MySQL 5.7+):
cd /usr/local/mysql
bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
- 配置文件:
cp support-files/my-default.cnf /etc/my.cnf 並按需修改。
- 啟動腳本:
cp support-files/mysql.server /etc/init.d/mysqld && chmod +x /etc/init.d/mysqld
- 加入自啟動:
chkconfig --add mysqld && chkconfig mysqld on
- 環境變量:
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile && source /etc/profile
- 啟動服務:
service mysqld start
- 安全初始化:
mysql_secure_installation
驗證安裝
mysql -u root -p -e "SELECT VERSION(); SHOW DATABASES;"
# 輸出應包含版本號、系統庫列表
常見編譯錯誤對策
| 錯誤現象 | 原因 | 解決 |
| CMake 錯誤:Curses library not found | 缺少 ncurses-devel | yum install ncurses-devel |
| 編譯錯誤:bison not found | 缺少 bison | yum install bison |
| SSL 錯誤:OpenSSL version mismatch | 系統 OpenSSL 版本過舊 | -DWITH_SSL=bundled 使用內置 |
| 內存不足導致 make 失敗 | 編譯並行度過高 | make -j2 限制並行 |
卸載清理
service mysqld stop
chkconfig --del mysqld
rm -rf /usr/local/mysql /data/mysql /etc/my.cnf /etc/init.d/mysqld
userdel mysql
groupdel mysql