MySQL 作為最流行的開源關係型資料庫,在 CentOS 上的標準化部署流程對運維與開發同樣重要。本文以 CentOS 7 + MySQL 5.7 為例,梳理從軟體安裝到生產就緒的完整路徑,並針對字元集、權限模型、服務管理等易踩坑點給出最佳實踐建議。
# yum install -y mysql-server mysql-devel mysql
# mysql --version
mysql Ver 14.14 Distrib 5.7.x for linux-glibc2.12 (x86_64)
建議啟用 EPEL 或官方 RPM 源以獲取更新版本;生產環境推薦編譯安裝或使用 Percona/MariaDB 分支以獲得更好效能。
/etc/my.cnf[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
innodb_buffer_pool_size=1G # 物理記憶體 60-70%
innodb_log_file_size=256M
max_connections=500
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
default-character-set=utf8mb4
關鍵點:
✅ 採用 utf8mb4 完整支援 Emoji 及生僻字
✅ 關閉 symbolic-links 降低安全風險
✅ InnoDB 核心參數依機器記憶體調整,避免 OOM
# systemctl enable mysqld
# systemctl start mysqld
# systemctl status mysqld
CentOS 7 採用 systemd,舊版 chkconfig 命令已棄用,改用 systemctl 統一管理。
# mysql_secure_installation
# 或手動執行:
mysql -u root -p
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('StrongP@ssw0rd');
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('StrongP@ssw0rd');
DELETE FROM mysql.user WHERE User='';
DROP DATABASE IF EXISTS test;
FLUSH PRIVILEGES;
必做項:
🔒 設定強密碼(含大小寫、數字、特殊符號,≥12 位)
🔒 刪除匿名帳號與測試庫
🔒 禁止 root 遠端登入,改用專用應用帳號 + 最小權限原則
🔒 生產環境啟用 SSL 傳輸加密
# 連線測試
mysql -u root -p -e "SELECT VERSION(); SHOW VARIABLES LIKE 'character_set%';"
# 監控關鍵指標
SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW ENGINE INNODB STATUS\G
建議接入 Prometheus + Grafana 監控 QPS、緩存命中率、慢查詢等指標,並配置 xtrabackup 定時全備 + Binlog 增備,制定 RTO/RPO 達標的災難恢復演練計畫。
標準化部署流程 + 持續優化配置 = 穩定高效的 MySQL 服務基石。