雖然 CentOS 6 已停止維護,但存量系統仍在運行。MySQL 5.6 引入 GTID、Online DDL、Performance Schema 增強等特性,源碼編譯安裝能精確控制版本、路徑、引擎模組。本文記錄在 CentOS 6.5 x86_64 上編譯安裝 MySQL 5.6.10 的完整步驟,含依賴解決、CMake 參數、初始化、啟動腳本、安全配置。
yum install -y gcc gcc-c++ make cmake \
openssl-devel pcre-devel bzip2-devel libcurl-devel \
libjpeg-devel libpng-devel freetype-devel \
libmcrypt-devel libxslt-devel gmp-devel \
libxml2-devel mhash ncurses-devel
# 註:ncurses-devel 缺失會導致 CMake 報 "Curses library not found"
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
mkdir -p /data/mysql/data
chown -R mysql:mysql /data/mysql
cd /usr/local/src
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.10.tar.gz
tar zxf mysql-5.6.10.tar.gz
cd mysql-5.6.10
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.10 \
-DSYSCONFDIR=/usr/local/mysql-5.6.10/etc \
-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.10/tmp/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_USER=mysql \
-DMYSQL_DATADIR=/data/mysql/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1
注意: MYSQL_USER 參數在 5.6.10 中已廢棄,CMake 會警告「Manually-specified variables were not used」,可忽略。
make -j$(nproc) && make install
mkdir -p /usr/local/mysql-5.6.10/etc /usr/local/mysql-5.6.10/tmp
ln -s /usr/local/mysql-5.6.10 /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql-5.6.10 /usr/local/mysql
echo 'export MYSQL_HOME=/usr/local/mysql' >> /etc/profile
echo 'export PATH=$PATH:$MYSQL_HOME/bin' >> /etc/profile
source /etc/profile
cd /usr/local/mysql
# 先備份/移除系統舊 my.cnf,避免干擾
mv /etc/my.cnf /etc/my.cnf.bak 2>/dev/null
scripts/mysql_install_db --user=mysql --datadir=/data/mysql/data
# 輸出末尾提示設定 root 密碼、運行 mysql_secure_installation
cat > /usr/local/mysql-5.6.10/my.cnf <<'EOF'
[mysqld]
basedir=/usr/local/mysql-5.6.10
datadir=/data/mysql/data
socket=/usr/local/mysql-5.6.10/tmp/mysql.sock
user=mysql
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character-set-server=utf8
collation-server=utf8_general_ci
EOF
# 1. 安全模式啟動(跳過授權表、關閉網路)
/usr/local/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# 2. 另開終端免密登入修改密碼
mysql -u root
UPDATE mysql.user SET Password=PASSWORD('YourStrongPass') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
# 3. 關閉安全模式進程
pkill -f mysqld_safe
pkill -f mysqld
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
service mysqld start
/usr/local/mysql/bin/mysql_secure_installation
# 依提示:設 root 密碼(已設則跳過)、移除匿名用戶、禁止 root 遠程登入、移除 test 庫、重新載入權限
CREATE DATABASE app_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'AppPass123!';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
chown -R mysql:mysql /data/mysql/data
chmod -R go-rwx /data/mysql/data
至此,CentOS 6.5 + MySQL 5.6.10 源碼編譯安裝與安全基線配置完成。相同流程適用於 5.6.x 全系列,5.7 僅需將 mysql_install_db 改為 mysqld --initialize 並調整 CMake 參數。