背景
最近想学习下mysql的通信协议,但是本机上mysql是5.6,而找到的文档是基于8.0版本的,所以就升级下本地的mysql。mysql的升级网上教程特别多,本来也不想写的。由于此次升级一个失误导致搞了大晚上,特意记录一下。
升级步骤
- 安装MySQL 8.0。
- 数据传输。
- 卸载MySQL 5.6。
1. 安装MySQL 8.0
- 从官网上下载MySQL8.0解压放到指定目录。地址
- 配置
my.ini
文件,配置端口为3307,原mysql 5.6的是3306。 - 初始化数据库
./bin/mysqld --initialize --console
。记得记录生成的密码,以便后续使用。注意:由于本人是win 10的环境,千万不要加上--user=mysql
,这个导致一晚上都没捣鼓好,各种登录不上。如果出现msvcp140.dll、VCRUNTIME140_1.dll找不到下载安装下就好了。 - 安装服务
./bin/mysqld -install MySQL8
,服务名称可自定义。 - 启动服务net start MySQL8。
- 登录
./bin/mysql -P3307 -uroot -p
。输入前面记录的生成的密码。 - 修改密码并刷新权限。
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
,最后清理磁盘文件。
踩过的坑
- 当我们密码登录不上,想要跳过登录验证时,要使用
mysqld --console --skip-grant-tables --shared-memory
。如果在my.ini
中使用skip-grant-tables
或者skip-grant-tables=1
是启动不了的。 - 使用
update user set authentication_string = password('xx') where user='root';
修改密码是有问题的。mysql8.0已移除了password
函数。可以使用MD5
、SHA1
或者其他加密方式。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。