【MySQL】Windows下mysql5.6升级到5.7的方法
文章目录
前言
线上的MySQL版本较旧,需要对其进行升级。Mysql的升级方式分为两种:原地升级和逻辑升级。
这两种升级方式,本质没有什么区别的。只是在对数据文件的处理上有些区别而已。
原地升级是直接将数据文件进行拷贝,而逻辑升级是通过逻辑导出导入,需要用到mysqldump。
原地升级
下载最新的mysql5.7压缩包
下载地址:https://dev.mysql.com/downloads/mysql/
下载完解压后会发现,没有data目录和my.ini文件。
停止mysql服务
将现有的mysql服务停止,可以用命令net stop 服务名
或者在服务中停止
替换bin和share文件夹
将新版的bin和share文件夹替换旧版的
启动mysql服务
启动mysql服务,可以用命令net start 服务名
或者在服务中启动
升级mysql
执行mysql_upgrade -uxxx1 -pxxx2
其中xxx1需要替换为mysql的账户,xxx2替换为对应的密码
注意:期间可能会输出如下图的error,但是随后自动执行了upgrading,如果没有请注意。
当提示successfully时,表示升级完成。
升级成功后,再次重启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,注意登陆时限定端口