前置依賴安裝
yum -y install gcc gcc-c++ cmake ncurses-devel openssl-devel bison \
libaio-devel perl-Data-Dumper wget tar gzip
創建用戶、目錄結構
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
mkdir -p /opt/mysql/{data,etc,log,tmp}
chown -R mysql:mysql /opt/mysql
下載、驗證、解壓源碼
cd /usr/local/src
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.21.tar.gz
# 或使用官方鏡像
tar zxvf mysql-5.6.21.tar.gz
chown -R mysql:mysql mysql-5.6.21
編譯配置 (CMake 關鍵參數)
cd mysql-5.6.21
cmake \
-DCMAKE_INSTALL_PREFIX=/opt/mysql \
-DMYSQL_DATADIR=/opt/mysql/data \
-DSYSCONFDIR=/opt/mysql/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/opt/mysql/tmp/mysql.sock \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_BOOST=boost_1_59_0 # 5.6 不需 Boost,5.7+ 需
編譯安裝 (視 CPU 核心數調整 -j)
make -j$(nproc)
make install
配置文件 (/opt/mysql/etc/my.cnf)
[mysqld]
basedir = /opt/mysql
datadir = /opt/mysql/data
port = 3306
socket = /opt/mysql/tmp/mysql.sock
pid-file = /opt/mysql/tmp/mysql.pid
user = mysql
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
skip-name-resolve
explicit_defaults_for_timestamp = ON
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_file_per_table = ON
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
log-bin = /opt/mysql/log/binlog/mysql-bin
slow_query_log = 1
slow_query_log_file = /opt/mysql/log/slow.log
long_query_time = 0.5
tmpdir = /opt/mysql/tmp
max_connections = 1000
open_files_limit = 65535
[client]
socket = /opt/mysql/tmp/mysql.sock
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
初始化數據庫 (5.6 專用腳本)
/opt/mysql/scripts/mysql_install_db \
--user=mysql \
--basedir=/opt/mysql \
--datadir=/opt/mysql/data
啟動腳本與服務註冊
cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
service mysqld start
設置 root 密碼並驗證
/opt/mysql/bin/mysqladmin -u root password 'StrongPass123!'
/opt/mysql/bin/mysql -uroot -p'StrongPass123!' -e "SHOW DATABASES;"
環境變量 (可選)
echo 'export PATH=/opt/mysql/bin:$PATH' >> /etc/profile
source /etc/profile
常見編譯錯誤與解決
| 錯誤 | 解決 |
| CMake Error: Curses library not found | yum install ncurses-devel |
| SSL library not found | yum install openssl-devel |
| Bison not found | yum install bison |
| make 過程內存不足 | 增加 swap 或減少 -j 並發數 |
| mysqld: Can't create test file | 檢查 datadir 權限、磁碟空間、SELinux |
遷移建議
- 生產環境優先用官方 RPM/Yum 仓库 (
mysql-community-server) 或 Percona Server,編譯安裝維護成本高、無安全更新推送。
- 編譯安裝適合「定製化需求、特殊優化、舊版本依賴」場景。