win 10下mysql 5.6 升级到mysql 8.0

背景

最近想学习下mysql的通信协议,但是本机上mysql是5.6,而找到的文档是基于8.0版本的,所以就升级下本地的mysql。mysql的升级网上教程特别多,本来也不想写的。由于此次升级一个失误导致搞了大晚上,特意记录一下。

升级步骤

  1. 安装MySQL 8.0。
  2. 数据传输。
  3. 卸载MySQL 5.6。

1. 安装MySQL 8.0

  1. 从官网上下载MySQL8.0解压放到指定目录。地址
  2. 配置my.ini文件,配置端口为3307,原mysql 5.6的是3306。
  3. 初始化数据库./bin/mysqld --initialize --console。记得记录生成的密码,以便后续使用。注意:由于本人是win 10的环境,千万不要加上--user=mysql,这个导致一晚上都没捣鼓好,各种登录不上。如果出现msvcp140.dll、VCRUNTIME140_1.dll找不到下载安装下就好了。
  4. 安装服务./bin/mysqld -install MySQL8,服务名称可自定义。
  5. 启动服务net start MySQL8。
  6. 登录./bin/mysql -P3307 -uroot -p。输入前面记录的生成的密码。
  7. 修改密码并刷新权限。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'XXXX'; 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
FLUSH   PRIVILEGES;

2.数据传输

本人使用的是navcat for mysql传输数据的,本机没多少数据足够使用。

3.卸载MySQL 5.6

当我们确认数据已导入新库后,就可以卸载老的数据库了。先停止MySQL 5.6的服务net stop mysql,然后删除服务sc delete mysql,最后清理磁盘文件。

踩过的坑

  1. 当我们密码登录不上,想要跳过登录验证时,要使用mysqld --console --skip-grant-tables --shared-memory。如果在my.ini中使用skip-grant-tables或者skip-grant-tables=1是启动不了的。
  2. 使用update user set authentication_string = password('xx') where user='root';修改密码是有问题的。mysql8.0已移除了password函数。可以使用MD5SHA1或者其他加密方式。
阅读 60

推荐阅读
目录