首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

CentOS 7 從原始碼編譯安裝 MySQL 5.5/5.6/5.7 完整實戰手冊

     編輯:MySQL 綜合教學

Linux 生產環境源碼編譯部署 MySQL:依賴解決、CMake 參數調優、系統服務註冊全流程

源碼編譯安裝 MySQL 可深度定製功能模組、優化編譯參數、適配特定硬體架構,是高效能生產環境的首選部署方式。本文以 CentOS 7 + MySQL 5.5.40 為例,完整記錄從依賴安裝到服務驗證的標準化流程。

第一階段:系統級依賴套件安裝

yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel perl perl-CPAN \
libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \
zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel \
ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \
krb5 krb5-devel libidn libidn-devel openssl openssl-devel \
openldap openldap-devel nss_ldap openldap-clients openldap-servers \
cmake make ncurses-devel pcre pcre-devel libtool libxml2-devel \
ntpdate gd-devel libpng-devel zip unzip gzip

說明:以上套件涵蓋編譯工具鏈、壓縮庫、SSL、LDAP、正則表達式、圖形庫等 MySQL 編譯所需所有依賴。CentOS 8/RHEL 8 請改用 dnf 並注意套件名稱差異(如 e2fsprogs-devel 非 e2frogs-devel)。

第二階段:建立專用系統用戶與目錄結構

# 建立無登入權限的 mysql 系統用戶
useradd -s /sbin/nologin -M mysql

# 建議目錄規劃
mkdir -p /usr/local/mysql/{data,logs,tmp}
chown -R mysql:mysql /usr/local/mysql

第三階段:CMake 配置參數深度解析

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-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_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_BOOST=boost_1_69_0 \
-DDOWNLOAD_BOOST=1 \
-DCMAKE_BUILD_TYPE=Release
關鍵參數用途建議值
CMAKE_INSTALL_PREFIX安裝根目錄/usr/local/mysql
DEFAULT_CHARSET預設字元集utf8mb4(支援 Emoji)
WITH_INNOBASE_STORAGE_ENGINE啟用 InnoDB1 (必須)
WITH_PARTITION_STORAGE_ENGINE啟用分區引擎1
WITH_BOOST / DOWNLOAD_BOOSTMySQL 5.7+ 需 Boost 庫自動下載或指定本地路徑
CMAKE_BUILD_TYPE編譯優化等級Release(生產)/ Debug(開發)

第四階段:編譯安裝與初始化

# 多核並行編譯加速 (假設 8 核)
make -j8 && make install

# 複製配置檔範本
cp support-files/my-large.cnf /etc/my.cnf
# 或依實際記憶體選擇 my-small/medium/large/huge/innodb-heavy-4G.cnf

# 複製啟動腳本
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld

# 初始化系統表 (MySQL 5.7+)
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql \
--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# MySQL 5.5/5.6 使用
/usr/local/mysql/scripts/mysql_install_db --user=mysql \
--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

第五階段:權限修正、服務註冊與啟動驗證

# 目錄權限
chown -R mysql:mysql /usr/local/mysql
chmod 755 /usr/local/mysql

# 註冊系統服務
chkconfig --add mysqld
chkconfig mysqld on
chkconfig --list mysqld
# 輸出應包含 2:on 3:on 4:on 5:on

# 啟動服務
service mysqld start
# 或 systemctl start mysqld (CentOS 7+)

# 驗證連線
/usr/local/mysql/bin/mysql -u root -e "SELECT VERSION(), CURRENT_USER();"
# MySQL 5.7+ 初始無密碼,直接登入;5.5/5.6 預設 root 空密碼

第六階段:生產環境安全加固

/usr/local/mysql/bin/mysql_secure_installation
# 依提示操作:
# 1. 設定 root 強密碼
# 2. 移除匿名用戶
# 3. 禁止 root 遠程登入
# 4. 移除 test 資料庫
# 5. 重新載入權限表

常見編譯錯誤與對策

錯誤現象原因解決方案
CMake Error: Could NOT find Curses缺 ncurses-develyum install ncurses-devel
error: 'MYSQL_SERVER_VERSION' undeclaredBoost 版本不符指定 -DWITH_BOOST=正確路徑 或 -DDOWNLOAD_BOOST=1
ld: cannot find -lsslOpenSSL 開發包缺失yum install openssl-devel
make[2]: *** [sql/sql_acl.cc] Error 1記憶體不足導致 OOM Killer增加 swap 或減少 -j 並行數

升級與維護提醒

  • 小版本升級(5.7.30 → 5.7.31):重新編譯替換二進制檔,執行 mysql_upgrade。
  • 大版本升級(5.6 → 5.7):必須遷移資料(mysqldump/邏輯備份),不可直接替換二進制檔。
  • 定期檢查 /usr/local/mysql/data/*.err 錯誤日誌。
  • 配置 logrotate 切割慢查詢日誌、錯誤日誌、General Log。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved