CentOS 默認倉庫的 MySQL 版本過舊(5.1/5.5),生產環境需 5.7+ 享受原生 JSON、GIS、Generated Column、Sys Schema、複製增強等特性。本文演示通過官方 Yum Repository 快速部署 MySQL 5.7,涵蓋源配置、安裝、安全初始化、配置調優要點。
# 1. 下載對應 Release 包(以 CentOS 7 為例)
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 5.7 專用源包名含 mysql57-community-release
# 2. 安裝源配置
rpm -ivh mysql57-community-release-el7-3.noarch.rpm
# 3. 驗證源生效
yum repolist enabled | grep mysql
注意:MySQL 官方源 2023 年後預設指向 8.0,需在 /etc/yum.repos.d/mysql-community.repo 中手動啟用 5.7 段(enabled=1)並禁用 8.0 段(enabled=0)。
yum install -y mysql-community-server
# 啟動服務
systemctl start mysqld
systemctl enable mysqld
# 查看臨時 root 密碼(5.7+ 默認生成隨機密碼)
grep 'temporary password' /var/log/mysqld.log
# 安全向導:修改 root 密碼、移除匿名用戶、禁止遠程 root、刪除 test 庫
mysql_secure_installation
[mysqld]
# 基礎
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 字符集
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci
# 連接
max_connections=1000
max_connect_errors=100000
wait_timeout=600
skip_name_resolve=1
# InnoDB 核心(按實例內存 60-70%)
innodb_buffer_pool_size=1G
innodb_buffer_pool_instances=8
innodb_log_file_size=256M
innodb_log_files_in_group=3
innodb_flush_log_at_trx_commit=1
innodb_flush_method=O_DIRECT
innodb_file_per_table=1
innodb_io_capacity=2000
# 複製(如需)
server_id=101
log_bin=mysql-bin
binlog_format=ROW
expire_logs_days=7
gtid_mode=ON
enforce_gtid_consistency=1
# 慢查詢
slow_query_log=1
slow_query_log_file=/var/lib/mysql/slow.log
long_query_time=1
log_queries_not_using_indexes=1
# SQL 模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
[client]
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock
journalctl -u mysqld -xe、檢查 datadir 權限、selinux 模式validate_password 插件要求長度/複雜度,mysql_secure_installation 會引導修改GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES;、防火牆放行 3306MySQL 5.7 於 2023 年 10 月結束 GA 支持,建議規劃升級至 8.0 LTS(長期支持至 2026/2028)。升級前必須:
mysqlcheck --all-databases --check-upgrade 檢查不兼容