yum -y install gcc gcc-c++ autoconf automake zlib libxml2 ncurses-devel \ libgcrypt libtool cmake openssl openssl-devel bison bison-devel unzip wget
cd /usr/local/src wget https://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.27.tar.gz groupadd mysql useradd -g mysql -s /sbin/nologin -M mysql # 無登入殼、不建家目錄
tar zxvf mysql-5.6.27.tar.gz cd mysql-5.6.27 cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mysql \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci
| 參數 | 作用 | 建議值/說明 |
|---|---|---|
CMAKE_INSTALL_PREFIX | 安裝根目錄 | /usr/local/mysql |
MYSQL_DATADIR | 資料文件目錄 | /data/mysql(獨立磁碟/分區最佳) |
SYSCONFDIR | my.cnf 搜尋目錄 | /etc |
DEFAULT_CHARSET | 預設字符集 | utf8(生產建議 utf8mb4,需 5.5.3+) |
DEFAULT_COLLATION | 預設校對規則 | utf8_general_ci |
WITH_INNOBASE_STORAGE_ENGINE | 啟用 InnoDB | 1(必開) |
ENABLED_LOCAL_INFILE | 允許 LOAD DATA LOCAL | 1(導入大量資料常用) |
make && make install
編譯時間視 CPU 核心數而定,建議 make -j$(nproc) 並行加速。
/usr/local/mysql/scripts/mysql_install_db \ --basedir=/usr/local/mysql \ --user=mysql \ --datadir=/data/mysql
輸出 Success! 即代表系統表建立完成。
/etc/init.d/mysqld start mysql_secure_installation
mysql_secure_installation 互動式完成:設定 root 密碼、移除匿名用戶、禁止 root 遠程登入、刪除 test 庫、重載權限表。
mysql -uroot -p -e "SELECT VERSION(); SHOW VARIABLES LIKE 'char%';" # 應顯示 5.6.27 且字符集均為 utf8
rm -rf CMakeCache.txt 再執行 cmake,否則舊快取導致參數不生效。yum install libaio-devel,否則 InnoDB 啟動報錯。setenforce 0 或配置正確上下文,否則 /data/mysql 讀寫被阻擋。iptables -A INPUT -p tcp --dport 3306 -j ACCEPT。innodb_buffer_pool_size(實體記憶體 60-70%)、innodb_log_file_size、max_connections 等。源碼編譯雖繁瑣,卻能精準控制每個編譯選項、目錄佈局與引擎組合,是掌握 MySQL 內核運行機制的最佳途徑。將本流程封裝為 Ansible/Shell 腳本,即可實現「一鍵交付」標準化環境。