首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

CentOS 6.4 編譯安裝 MySQL 8.0.0 完整教程:GCC 升級、Boost 依賴與配置優化

     編輯:MySQL 資料庫相關知識

環境準備與依賴安裝

# 基礎依賴
yum install -y ncurses-devel libaio glibc-devel.i686 glibc-devel gcc gcc-c++

# 關鍵:MySQL 8.0 要求 GCC ≥ 4.8,CentOS 6.4 預設 4.4.7 需手動升級
wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.gz
tar xf gcc-4.8.2.tar.gz && cd gcc-4.8.2
./contrib/download_prerequisites
./configure --prefix=/usr/local/gcc-4.8.2 --enable-bootstrap --enable-threads=posix --enable-languages=c,c++,objc,obj-c++
make -j$(nproc) && make install  # 編譯耗時極長,建議掛載 swap

替換系統默認 GCC

# 備份舊版本
mv /usr/bin/gcc /usr/bin/gcc447
mv /usr/bin/g++ /usr/bin/g++447
mv /usr/bin/c++ /usr/bin/c++447
mv /usr/bin/cc /usr/bin/cc447

# 建立軟鏈接
ln -s /usr/local/gcc-4.8.2/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc-4.8.2/bin/g++ /usr/bin/g++
ln -s /usr/local/gcc-4.8.2/bin/c++ /usr/bin/c++
ln -s /usr/local/gcc-4.8.2/bin/gcc /usr/bin/cc

# 解決 libstdc++ 版本衝突
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
ln -s /usr/local/gcc-4.8.2/lib64/libstdc++.so.6.0.18 /usr/lib64/libstdc++.so.6

安裝 Boost 1.60.0(MySQL 8.0 強依賴)

wget -c "https://sourceforge.net/projects/boost/files/boost/1.60.0/boost_1_60_0.tar.bz2" --no-check-certificate
tar xf boost_1_60_0.tar.bz2 && cd boost_1_60_0
./bootstrap.sh
./b2 stage threading=multi link=shared
./b2 install threading=multi link=shared  # 安裝至 /usr/local/include/boost

編譯安裝 MySQL 8.0.0

# 下載源碼
wget -c https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.0-dmr.tar.gz
tar xf mysql-boost-8.0.0-dmr.tar.gz && cd mysql-8.0.0-dmr

# CMake 配置(關鍵參數解釋見下表)
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc/mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \
-DWITH_BOOST=/usr/local/boost_1_60_0/  # 指定 Boost 路徑

make -j$(nproc) && make install

CMake 關鍵參數對照表

參數推薦值說明
CMAKE_INSTALL_PREFIX/usr/local/mysql安裝根目錄
MYSQL_DATADIR/usr/local/mysql/data數據文件目錄
DEFAULT_CHARSETutf8mb4支援 emoji、完整 Unicode
DEFAULT_COLLATIONutf8mb4_unicode_ci準確排序規則
WITH_BOOST/usr/local/boost_1_60_0必須指定,否則會重複下載
WITH_INNOBASE_STORAGE_ENGINE1啟用 InnoDB(默認已開啟)
ENABLED_LOCAL_INFILE1允許 LOAD DATA LOCAL INFILE

後續配置與啟動

# 建立用戶與權限
groupadd mysql && useradd -g mysql mysql
chown -R mysql:mysql /usr/local/mysql

# 初始化數據目錄(生成隨機 root 密碼)
cd /usr/local/mysql
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
bin/mysql_ssl_rsa_setup

# 配置文件
cp support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf  # 參考下方模板

# 建立運行目錄
mkdir /var/run/mysqld && chown mysql /var/run/mysqld -R

# 環境變量
echo "export PATH=\$PATH:/usr/local/mysql/bin:/usr/local/mysql/sbin" >> /etc/profile
source /etc/profile

# 系統服務
cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
service mysql start

/etc/my.cnf 推薦模板

[mysqld]
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
pid-file=/var/run/mysqld/mysqld.pid
log-error=/var/log/mysqld.log

# 效能基礎配置
innodb_buffer_pool_size=1G  # 物理內存 60-70%
innodb_log_file_size=256M
innodb_flush_log_at_trx_commit=1
sync_binlog=1
max_connections=500
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

常見編譯錯誤排查

錯誤現象原因解決方案
CMake 報 Boost 版本不匹配路徑錯誤或版本不符確保 -DWITH_BOOST 指向正確的 1.60.0 目錄
編譯期 GCC 版本檢查失敗未正確替換系統 gcc執行 gcc --version 驗證,檢查 which gcc
鏈接階段找不到 libstdc++動態庫路徑未更新執行 ldconfig、檢查 LD_LIBRARY_PATH
初始化報錯 data 目錄非空殘留文件rm -rf /usr/local/mysql/data/* 後重試
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved