【MySQL】Windows下mysql5.6升级到5.7的方法

前言

线上的MySQL版本较旧,需要对其进行升级。Mysql的升级方式分为两种:原地升级和逻辑升级。
这两种升级方式,本质没有什么区别的。只是在对数据文件的处理上有些区别而已。
原地升级是直接将数据文件进行拷贝,而逻辑升级是通过逻辑导出导入,需要用到mysqldump。

原地升级

下载最新的mysql5.7压缩包

下载地址:https://dev.mysql.com/downloads/mysql/
下载完解压后会发现,没有data目录和my.ini文件。【MySQL】Windows下mysql5.6升级到5.7的方法

停止mysql服务

将现有的mysql服务停止,可以用命令net stop 服务名或者在服务中停止

替换bin和share文件夹

将新版的bin和share文件夹替换旧版的

启动mysql服务

启动mysql服务,可以用命令net start 服务名或者在服务中启动

升级mysql

执行mysql_upgrade -uxxx1 -pxxx2
其中xxx1需要替换为mysql的账户,xxx2替换为对应的密码

注意:期间可能会输出如下图的error,但是随后自动执行了upgrading,如果没有请注意。
【MySQL】Windows下mysql5.6升级到5.7的方法
当提示successfully时,表示升级完成。
【MySQL】Windows下mysql5.6升级到5.7的方法

升级成功后,再次重启mysql5.7服务

注意要记得重启mysql服务

总结

如果启动失败,可能是:my.ini中,版本5.6的配置,有一些在版本5.7下面已经不能用了。如果有其他问题,可以将MySQL的日志打开,根据具体现象分析。
并且本文针对的是服务名称不改变的方法,如果想要修改服务名称,需要先删除服务再添加,具体的可以查看参考中的文档。

逻辑升级

但是实际情况中,可能不允许直接原地升级,比如mysql版本过旧等,这时候我们需要用通用的升级方式。也就是备份原数据库,安装mysql,再导入的方式。
以下是mysql5.7.30的部署过程,不同版本之间有所区别,以mysql官方文档为准。

备份数据库
替换新的mysql文件

停止服务,将原mysql文件夹下的bin、share、data文件夹删除,复制新的mysql的bin、share,新建data文件夹。

修改my.ini

在最后添加两行
basedir=D:\mysql
datadir=D:\mysql\data

安装新的mysql

管理员身份打开cmd,进入到/mysql/bin下,执行mysqld --initialize --console,注意记录最后生成的临时密码
执行mysqld install
执行net start <原mysql服务名>
执行mysql -uroot -p临时密码

进入mysql命令行后分别执行
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
SET PASSWORD FOR 'root'@'%' = PASSWORD('123456');
注意其中123456是想要设置的密码

执行exit退出mysql命令行
执行mysql -uroot -p123456
执行create database xxx;
执行use xxx;
执行source 之前备份的sql的路径(比如source E:\bak.sql
等待导入完成

创建新用户(可选)

CREATE USER "root"@"%" IDENTIFIED BY "123456";
grant ALL on *.* to [email protected]"%" identified by "123456";

总结

如果同一台服务器上有多个Mysql,注意登陆时限定端口

参考

Win下Mysql5.6升级到5.7