在 CentOS 上升级 MySQL 的完整步骤
一 升级前准备
mysqldump -u root -p --all-databases --routines --triggers --single-transaction --hex-blob > /root/mysql_full_backup_$(date +%F).sql。备份文件妥善离线保存。mysql -V、systemctl status mysqld。确认数据目录位置(默认 /var/lib/mysql)与配置文件路径(常见 /etc/my.cnf 或 /etc/my.cnf.d/)。rpm -qa | grep -i mariadb。如共存需先统一处理(迁移或卸载),避免包冲突。二 原地升级步骤(In-place,推荐)
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm && sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpmwget https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm && sudo rpm -ivh mysql80-community-release-el8-3.noarch.rpm/etc/yum.repos.d/mysql-community.repo,将目标版本的 enabled=1,其他版本 enabled=0。sudo yum update mysql-community-server(仅升级服务器)或 sudo yum update(系统范围内升级相关包)。sudo systemctl restart mysqld && sudo systemctl enable mysqld。sudo grep 'temporary password' /var/log/mysqld.log,随后 mysql -u root -p 登录并执行 ALTER USER 'root'@'localhost' IDENTIFIED BY 'Your_Strong_P@ssw0rd!';。sudo mysql_secure_installation(按需设置密码策略、移除匿名用户、禁止 root 远程等)。三 跨大版本升级要点(如 5.7 → 8.0)
mysql_native_password,8.0 默认 caching_sha2_password)、已安装插件、SQL 模式、GTID、复制拓扑、定时事件与存储过程等。innodb_fast_shutdown=1,干净关闭:sudo systemctl stop mysqld。ALTER USER 'user'@'host' IDENTIFIED WITH caching_sha2_password BY 'pwd'; 或改回 mysql_native_password。四 验证与回滚
mysql -V、mysql -e "SELECT VERSION();"、systemctl status mysqld。sudo yum downgrade mysql-community-server-<旧版本>,恢复配置文件与数据目录(如有快照优先用快照)。mysql -u root -p < /root/mysql_full_backup_YYYY-MM-DD.sql。/var/log/mysqld.log,常见为权限/磁盘/配置冲突。skip-grant-tables 未误开启,或使用临时密码路径 /var/log/mysqld.log 重置密码。