开始前请注意备份数据库源数据!!! 即data文件夹。
开始前请注意备份数据库源数据!!! 即data文件夹。
开始前请注意备份数据库源数据!!! 即data文件夹。
一、下载 mysql 8.0 的包
-
离线安装建议下载 zip 压缩包(解压,使用管理员命令行配置)
官网地址: https://dev.mysql.com/downloads/mysql/ -
使用安装包(双击安装,选择需要的组件,自动下载安装,配置)
官网地址: https://dev.mysql.com/downloads/installer/
二、zip方式解压后配置新的数据库
- 打开管理模式的cmd或者powershell
mysqld --initialize-insecure --user=root
- 等待执行完毕,需要一段时间
创建data文件夹等文件 - 创建安装服务
mysqld install
- 启动服务
or(cmd中可直接使用sc, powershell中要用sc.exe)net start mysql
sc.exe start mysql
- 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文件中的错误信息,进行调整。
四、过程中的问题记录
-
authentication plugin caching_sha2_password
因为从8.0之后的密码加密规则改变了(mysql_native_password
->caching_sha2_password
)
使用原来的密码方式:
alter user root@localhost identified with mysql_native_password by "root";
-
Unsupported redo log format (0). The redo log was created before MySQL 5.7.9
-
Cannot upgrade server earlier than 5.7 to 8.0
这两个问题,可以通过一个方案进行解决:
由于我的旧版本是5.6 不能直接从5.6更新至8.0, 所以根据提示,将5.6版本先更新至5.7版本,之后再由5.7更新至8.0即可。 -
指定my.ini地址时
此时要注意的是配置项的兼容性,配置项不兼容的情况下,会导致服务无法启动;
错误信息可在bin目录下找到mysqld出错的err文件日志,根据指定的错误信息进行相关修改,一般是直接注释掉。