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

CentOS 7 編譯安裝 MySQL 5.7.11 完整實戰筆記:從源碼到生產就緒

     編輯:MySQL 綜合教學

CentOS 7 編譯安裝 MySQL 5.7.11 完整實戰筆記:從源碼到生產就緒

MySQL 5.7 引入 CMake 建構系統、Boost 依賴、數據字典重構等重大變更,源碼安裝門檻顯著提高。本文記錄踩坑三天的完整經驗,強調以官方文檔為準,涵蓋依賴準備、CMake 參數解析、初始化、服務管理與安全加固全流程。

一、官方權威文檔(必讀)

二、環境準備

# 1. 建立專用用戶/組
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 2. 安裝編譯依賴
yum -y install gcc-c++ cmake make bison ncurses-devel perl

# 3. 下載源碼(建議下載含 Boost 的版本 mysql-5.7.11-boost.tar.gz)
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.11.tar.gz
tar zxvf mysql-5.7.11.tar.gz
cd mysql-5.7.11

三、CMake 關鍵配置參數

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_BOOST=../boost_1_59_0 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DENABLE_DOWNLOADS=1 \
-DMYSQL_DATADIR=/data/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DSYSCONFDIR=/etc

參數解析

參數說明
CMAKE_INSTALL_PREFIX安裝根目錄
DEFAULT_CHARSET/COLLATION預設字符集與校對規則
WITH_BOOST指定 Boost 庫路徑(5.7 強制依賴)
WITH_INNOBASE_STORAGE_ENGINE啟用 InnoDB(預設已開啟)
ENABLE_DOWNLOADS自動下載測試套件(如 gmock),網絡不通時會報錯
MYSQL_DATADIR數據目錄,建議獨立掛載點
SYSCONFDIRmy.cnf 搜尋目錄

四、編譯安裝

make -j$(nproc) && make install

常見錯誤:gmock-1.6.0.zip 下載失敗 → 手動下載放入 source_downloads/ 或關閉 -DENABLE_DOWNLOADS=0。

五、部署與初始化

# 1. 建立目錄與權限
mkdir -p /data/mysql /data/logs/mysql
chown -R mysql:mysql /data/mysql /data/logs/mysql

# 2. 進入安裝目錄
cd /usr/local/mysql
chown -R mysql:mysql .
chown -R root .

# 3. 初始化數據目錄 (5.7 新方式)
bin/mysqld --initialize-insecure --user=mysql \
    --basedir=/usr/local/mysql --datadir=/data/mysql

# 4. SSL/RSA 憑證生成
bin/mysql_ssl_rsa_setup --datadir=/data/mysql

# 5. 調整數據目錄權限
chown -R mysql:mysql /data/mysql

六、配置檔與服務管理

1. 複製配置範本

cp support-files/my-default.cnf /etc/my.cnf

2. 核心配置範例 /etc/my.cnf

[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
port=3306
user=mysql
character-set-server=utf8
collation-server=utf8_general_ci
explicit_defaults_for_timestamp=true
max_connections=500
open_files_limit=65535
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]
socket=/tmp/mysql.sock
port=3306

3. 註冊系統服務

cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig mysql on

4. 環境變數

echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile

七、啟動與安全加固

mysql -uroot -p -e "SELECT VERSION(); SHOW VARIABLES LIKE 'character_set%';"
# 輸出應顯示 5.7.11 且字符集為 utf8

九、避坑總結

  • Boost 依賴:5.7 必須指定 -DWITH_BOOST,建議下載官方打包版 mysql-5.7.x-boost.tar.gz。
  • initialize-insecure:5.7 不再支援 mysql_install_db,必須用 mysqld --initialize-insecure(不生成隨機密碼)或 --initialize(生成隨機密碼寫入 error log)。
  • explicit_defaults_for_timestamp=true:5.6.6+ 強制要求,否則啟動警告。
  • 官方文檔優先:網路教程多過時或錯誤,遇到問題直接查 refman/5.7。

源碼安裝雖繁瑣,卻能精準控制每一項編譯參數、目錄佈局與版本細節,是深入理解 MySQL 內核、構建定製化生產環境的必經之路。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved