小版本升级(如5.7.32→5.7.40)可直接用yum update mysql-community-server安全升级,前提是仅启用mysql57-community源、禁用其他mysql源,且不执行mysql_upgrade;升级后需重启mysqld并验证版本、日志及配置兼容性。

可以直接用 yum update mysql-community-server 安全升级 MySQL 5.7 的小版本(如 5.7.32 → 5.7.40),无需切换仓库、无需 mysql_upgrade,但必须确认当前启用的是 mysql57-community 源且未混用其他版本源。
确认当前启用的是 mysql57-community 源
小版本升级的前提是 Yum 仓库配置干净——如果 mysql80-community 或 mysql56-community 被意外启用,yum update 可能跳过更新、静默失败,甚至拉取错误包:
- 运行
yum repolist enabled | grep mysql,输出应只有一行,形如:mysql57-community/x86_64 MySQL 5.7 Community Server - 检查
/etc/yum.repos.d/mysql-community.repo:只有[mysql57-community]段的enabled=1,其余如[mysql80-community]必须为enabled=0 - 若发现多个源 enabled,立即用
yum-config-manager --disable mysql80-community禁用非目标源,再验证
执行 yum update mysql-community-server(不是 mysql-server)
MySQL 官方在 5.7+ 已弃用旧包名 mysql-server,使用它会导致升级失败或装错包(比如拉到 MariaDB):
- 正确命令是:
yum update mysql-community-server - 不要加
-y自动确认,先看 yum 输出的“即将更新”列表是否只含mysql-community-*相关包(如mysql-community-client、mysql-community-common) - 如果看到
mysql57-community-release也在更新列表里,说明你用的是较新版本的 repo 包(如 el7-11),这是正常的,不影响服务
升级后无需 mysql_upgrade,但要重启服务并验证
MySQL 5.7 的小版本(patch version)升级不变更数据字典结构,mysql_upgrade 不仅没必要,强行执行反而可能报错或误改系统表:
- 升级完成后运行
systemctl restart mysqld,再用mysql --version确认输出已是新版本号 - 登录后执行
SELECT VERSION();和SHOW VARIABLES LIKE 'datadir';,确保服务可连、路径未变 - 注意日志:
journalctl -u mysqld -n 50 --no-pager查看启动是否有unknown variable或deprecated警告——小版本有时会废弃某些配置项(如query_cache_type在 5.7.20+ 默认禁用)
容易被忽略的兼容性细节
看似安全的小版本升级,实际可能触发隐性行为变化,尤其当配置文件里用了已弃用参数或依赖旧默认值时:
-
sql_mode默认值在 5.7.5+ 变更为STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,若应用没适配严格模式,INSERT 会被拒绝 - 密码策略插件
validate_password在部分小版本中加强了校验逻辑(如 5.7.39 开始对password_history默认启用),重置密码时可能突然报错 - 如果自定义了
my.cnf中的innodb_log_file_size,升级后首次启动可能因日志文件大小不匹配而卡住,需手动删除ib_logfile*并重启(仅限测试环境,生产务必先备份)











