一、问题描述:
今天在虚拟服务器上用Docker下载了MySQL镜像,启动容器后用Navicat连接时报错:

图1.Navicat连接MySQL时报错
二、报错原因:
在网上查了相关信息,发现是Navicat版本与MySQL版本的不匹配所造成。MySQL8之前的加密规则是mysql_native_password,但是在MySQL8之后,加密规则变成了caching_sha2_password,Navicat低版本不支持了,要么升级Navicat,要么把用户密码登录的加密规则还原成mysql_native_password这种加密方式。
三、解决步骤:
1、查询当前docker容器列表,找到容器对应id或name:docker ps -a
2、进入docker中的MySQL容器:docker exec -it MySQL容器的id或name bash
3、进入容器后,输入用户和密码:mysql -u root -p
4、输入以下两条指令更改加密规则:
4.1 更新用户密码:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
4.2 更新用户密码:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
4.3 刷新权限:FLUSH PRIVILEGES;
5、更改成功后用Navicat连接即可。