在 windows 上 将 MySql 5.6 最小化升级到 8.0

开始前请注意备份数据库源数据!!! 即data文件夹。
开始前请注意备份数据库源数据!!! 即data文件夹。
开始前请注意备份数据库源数据!!! 即data文件夹。

一、下载 mysql 8.0 的包

二、zip方式解压后配置新的数据库

  1. 打开管理模式的cmd或者powershell
    mysqld --initialize-insecure --user=root
    
  2. 等待执行完毕,需要一段时间
    创建data文件夹等文件
  3. 创建安装服务
    mysqld install
    
  4. 启动服务
    net start mysql
    
    or(cmd中可直接使用sc, powershell中要用sc.exe)
    sc.exe start mysql
    
  5. root管理员登录(默认密码为空)
    mysql -u root
    

三、zip方式从5.6 升级至 8.0

此方式需要两个zip包,一个时5.7中间版本的zip包,一个目标版本8.0的zip包。
原因是: 经实践, 8.0版本不支持从低于5.7版本的mysql直接升级到8.0.
1. 建议下述命令都直接通过管理员命令行/powershell执行
2. 假设你的数据库以服务形式启动,且服务名为mysql

1. 第一步

从 5.6 升级至 5.7:
1)停止mysql服务
mysqladmin -uroot -p shutdown or net stop mysql or sc stop mysql or 手动关闭
2)解压5.7的zip包到源5.6目录进性完全覆盖
3)启动mysql服务
4)执行 mysql_upgrade -uroot 执行5.7的升级程序
如果root用户有密码,还需要加入-p参数
5) 没报错的话就从5.6到5.7升级完成了

2. 第二步

从5.7版本升级到8.0, 官网的升级文档
1) 关闭服务
mysqladmin -uroot -p shutdown or net stop mysql or sc stop mysql or 手动关闭
2) 解压8.0的压缩包解压覆盖之前5.7的所有文件
3)启动服务
4) 等待启动完成
8.0.16 之后的版本在启动服务的过程中,会自动升级和更新相关数据;
否则 需要执行 mysql_upgrade
5) 如果正常启动,则升级完成; 如果没有参考相关err文件中的错误信息,进行调整。

四、过程中的问题记录

  1. authentication plugin caching_sha2_password
    因为从8.0之后的密码加密规则改变了(mysql_native_password -> caching_sha2_password)
    使用原来的密码方式:
    alter user root@localhost identified with mysql_native_password by "root";

  2. Unsupported redo log format (0). The redo log was created before MySQL 5.7.9

  3. Cannot upgrade server earlier than 5.7 to 8.0
    这两个问题,可以通过一个方案进行解决:
    由于我的旧版本是5.6 不能直接从5.6更新至8.0, 所以根据提示,将5.6版本先更新至5.7版本,之后再由5.7更新至8.0即可。

  4. 指定my.ini地址时
    此时要注意的是配置项的兼容性,配置项不兼容的情况下,会导致服务无法启动;
    错误信息可在bin目录下找到mysqld出错的err文件日志,根据指定的错误信息进行相关修改,一般是直接注释掉。

猜你喜欢

转载自blog.csdn.net/downanddusk/article/details/125867307
今日推荐