萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

Ubuntu 14.04 源碼編譯安裝 MySQL 5.7 完整實錄:CMake 參數、Boost 依賴、常見報錯解決

前言

MySQL 5.7 起棄用傳統 ./configure,全面轉向 CMake 構建系統,並強依賴 Boost C++ 庫。Ubuntu 14.04 (Trusty) 官方源僅提供 5.5/5.6,生產環境需 5.7 新特性 (JSON、GIS、原生分區、優化器增強) 時,必須源碼編譯。本文記錄完整編譯安裝流程、關鍵 CMake 參數、Boost 依賴處理、常見編譯報錯解決方案。

一、環境準備

# 1. 系統更新與基礎工具
apt-get update && apt-get -y upgrade
apt-get -y install build-essential libncurses5-dev cmake libssl-dev bison

# 2. 創建 mysql 用戶與目錄
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mkdir -p /data/mysql/data
chown -R mysql:mysql /data/mysql

# 3. 下載源碼包 (含 Boost)
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.11.tar.gz
tar zxf mysql-boost-5.7.11.tar.gz
cd mysql-5.7.11

二、關鍵 CMake 參數配置

cmake . \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DMYSQL_DATADIR=/data/mysql/data \
  -DSYSCONFDIR=/etc \
  -DWITH_MYISAM_STORAGE_ENGINE=1 \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_MEMORY_STORAGE_ENGINE=1 \
  -DWITH_READLINE=1 \
  -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \
  -DMYSQL_TCP_PORT=3306 \
  -DENABLED_LOCAL_INFILE=1 \
  -DEXTRA_CHARSETS=all \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_general_ci \
  -DWITH_PARTITION_STORAGE_ENGINE=1 \
  -DWITH_EMBEDDED_SERVER=0 \
  -DDOWNLOAD_BOOST=1 \
  -DWITH_BOOST=./boost \
  -DWITH_SSL=system \
  -DWITH_DEBUG=0

參數詳解

  • -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost:自動下載並使用源碼包內置的 Boost 1.59.0,**強烈建議啟用**,避免手動編譯 Boost 耗時 20+ 分鐘
  • -DWITH_EMBEDDED_SERVER=0:禁用嵌入式服務器,**必須關閉**,否則 53% 處編譯報錯 pfs_connect_attr-t Error 1 (Percona 已知問題)
  • -DDEFAULT_CHARSET=utf8mb4:直接指定 utf8mb4,省去後續字符集遷移
  • -DEXTRA_CHARSETS=all:編譯所有字符集支援

三、編譯與安裝

# 多核並行編譯 (根據 CPU 核心數調整 -j)
make -j$(nproc)

# 安裝
make install

# 權限修正
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysql

四、初始化數據目錄與啟動

# 1. 複製配置文件
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
# 編輯 /etc/my.cnf 加入生產基線參數 (參考文章 180211)

# 2. 初始化數據字典 (5.7.6+)
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data

# 3. SSL/RSA 文件生成
/usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/data/mysql/data

# 4. 註冊服務
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
update-rc.d mysqld defaults

# 5. 環境變量
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile

五、首次登錄與密碼重置

# 1. 查看臨時密碼 (initialize 階段生成於 error log)
grep 'temporary password' /var/log/mysqld.log
# 或 5.7.11 可能輸出到 ~/.mysql_secret
cat ~/.mysql_secret

# 2. 登錄並修改密碼
mysql -uroot -p'臨時密碼'
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@StrongPass2024';
-- 5.7.6+ 推薦 ALTER USER,無需 FLUSH PRIVILEGES

六、常見編譯/運行報錯解決

報錯現象原因解決方案
Could not find boost未指定 Boost 路徑加 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost
pfs_connect_attr-t Error 1嵌入式服務器編譯失敗加 -DWITH_EMBEDDED_SERVER=0
Insecure configuration for --secure-file-priv安全目錄未配置my.cnf 添加 secure-file-priv=/tmp 或 =NULL
TIMESTAMP implicit DEFAULT deprecated舊語法警告my.cnf 添加 explicit_defaults_for_timestamp=1
skip-name-resolve 警告禁用 DNS 但存在 localhost 用戶刪除非 IP 用戶:DELETE FROM mysql.user WHERE Host NOT IN ('%','127.0.0.1','::1');

七、驗證安裝

service mysqld restart
mysql -uroot -p'Root@StrongPass2024' -e "SELECT VERSION(); SHOW VARIABLES LIKE 'char%';"
# 輸出應顯示 5.7.11 及 utf8mb4 相關變量

八、總結

源碼編譯安裝 MySQL 5.7 核心在於:CMake 參數精準配置、Boost 依賴自動化、嵌入式服務器禁用、utf8mb4 預設字符集。掌握上述流程,可在任何無官方包的 Linux 發行版上構建定製化 MySQL 實例。生產環境建議優先使用官方 YUM/APT 源或 Docker 部署,減少編譯維護成本。

copyright © 萬盛學電腦網 all rights reserved