1.备份mysql 5.6.17(当前版本) 安装目录下的data目录。然后准备卸载5.6.17服务。
以管理员身份运行cmd并切换到5.6的bin目录下执行:net stop mysql、mysqld remove 此时服务已经删除还需要清理下相关注册表。若能找到注册表的以下位置则删除:
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Applications/MySQL
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Applications/MySQL
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Applications/MySQL
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/MySQL
2.下载mysql 5.7并解压
下载地址:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.24-winx64.zip
解压5.7后的目录中没有my.ini,把5.6中的my.ini拷入5.7的解压目录中,注意其中配置的路径要匹配5.7目录的路径。
3.因5.6.17版本mysql库的user表是43列,5.7.24版本mysql库的user是45列,为避免因两个版本字典库的不同而产生的问题,先生成5.7.24版本的默认字典(performance_schema、mysql、sys)并备份。
以管理员身份运行cmd并切换到5.7的bin目录下,执行:mysqld --defaults-file=E:\Develop\mysql-5.7.24-winx64\my.ini --initialize --user=mysql --console 初始化安装包并记录下生成的初始随机密码。
从生成的data目录中拷出并备份performance_schema、mysql、sys三个目录,然后删除data目录。
把前面备份的5.6的data目录整个拷入5.7的根目录,执行:mysqld –initialize-insecure –user=mysql,再执行安装命令:mysqld install,提示“Service successfully installed.”服务成功安装。
执行启动mysql服务命令:net start mysql,mysql成功启动。
登录密码为5.6版本中使用的密码(我的是root):mysql -uroot -proot 登录成功。
但修改密码时会报错,执行修改密码语句:set password for root@localhost=password('1234');
原因为5.6版本的mysql库中的user表是43列,而5.7的user表有45列,此时退出mysql连接并关闭mysql服务:net stop mysql。
打开E:\Develop\mysql-5.7.24-winx64\data目录并删掉performance_schema、mysql(5.6.17没有sys),然后把前面备份的 performance_schema、mysql、sys拷入其中。启动mysql:net start mysql 成功启动。如果启动失败就等会再试。
然后使用上面生成的随机密码登录mysql,执行:mysql -uroot -plhhVgKp;i9YG 登录成功(初始密码不要写错)。
然后再次修改密码看是否会出错:set password for root@localhost=password('1234');修改成功。
最后验证5.6中的库表在5.7中也能正常打开。至此5.6中的数据迁移至5.7中完成。