You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

CentOS 7.4下MySQL 8.0启动失败:无法从5.7以下版本升级

解决CentOS 7.4上MySQL 8.0启动失败的问题

从你贴出的错误日志来看,核心问题非常明确:

[ERROR] [MY-013168] [InnoDB] Cannot upgrade server earlier than 5.7 to 8.0

MySQL 8.0对数据字典(DD)做了彻底的重构,官方明确要求:不能直接从低于5.7的版本升级到8.0,必须先升级到5.7版本完成数据兼容,才能再升级到8.0。下面分两种场景给你具体的解决步骤:

场景1:不需要保留旧数据,全新初始化MySQL 8.0

如果这是新安装,或者旧数据可以舍弃,直接清理旧数据重新初始化即可:

  • 先停止故障的MySQL服务:
    systemctl stop mysqld
    
  • 备份旧数据目录(以防万一,后续可按需删除):
    mv /var/lib/mysql /var/lib/mysql_old
    
  • 初始化MySQL 8.0:
    mysqld --initialize --user=mysql
    
  • 查看自动生成的临时root密码:
    cat /var/log/mysqld.log | grep 'temporary password'
    
  • 启动MySQL服务:
    systemctl start mysqld
    
  • 登录并修改root密码(替换成你自己的强密码):
    mysql -uroot -p
    
    登录后执行SQL命令修改密码:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
    

场景2:需要保留旧数据,先升级到5.7再过渡到8.0

如果必须保留原有数据,就得按官方要求的分步升级流程来:

第一步:卸载当前的MySQL 8.0

  • 停止服务:
    systemctl stop mysqld
    
  • 卸载MySQL 8.0相关包(注意不要删除数据目录/var/lib/mysql):
    yum remove mysql-community-server mysql-community-client mysql-community-common mysql-community-libs
    

第二步:安装并升级到MySQL 5.7

  • 配置MySQL 5.7的YUM源:创建/etc/yum.repos.d/mysql-community.repo文件,写入以下内容:
    [mysql57-community]
    name=MySQL 5.7 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    
  • 安装MySQL 5.7:
    yum install mysql-community-server
    
  • 启动5.7服务:
    systemctl start mysqld
    
  • 完成数据升级检查(初始密码同样在/var/log/mysqld.log里查找):
    mysql_upgrade -uroot -p
    
    确保这个命令执行无报错,说明旧数据已成功适配5.7版本。

第三步:升级到MySQL 8.0

  • 修改YUM源,切换到8.0仓库:编辑/etc/yum.repos.d/mysql-community.repo,把mysql57-communityenabled改为0mysql80-communityenabled改为1(如果没有这个小节,可手动添加):
    [mysql80-community]
    name=MySQL 8.0 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    
  • 升级安装MySQL 8.0:
    yum update mysql-community-server
    
  • 启动8.0服务:
    systemctl start mysqld
    
  • 再次执行升级检查,确保数据适配8.0:
    mysql_upgrade -uroot -p
    

注意事项

  • 备份优先:不管哪种场景,操作前一定要备份好/var/lib/mysql目录和相关配置文件,避免数据丢失。
  • YUM源验证:执行安装/升级前,可用yum repolist enabled | grep mysql命令确认当前启用的是目标版本的仓库。
  • 权限排查:如果启动后仍有问题,可以暂时关闭SELinux(setenforce 0)和防火墙(systemctl stop firewalld)排查是否是权限或端口限制导致的问题。

内容的提问来源于stack exchange,提问作者vens

火山引擎 最新活动