问题描述
使用navicat连接Mysql数据库报如下图所示错误:
原因
mysql8.0之前版本加密规则是mysql_native_password,而在mysql8之后的加密规则是caching_sha2_password,因此需要修改加密规则。
解决步骤
- 进入docker容器,若mysql没有安装在docker中,这一步可跳过。命令如下:
docker exec -it mysql bash
- 进入mysql控制台
mysql -uroot -p123456 //123456是你数据库登录密码
- 查看加密规则
use mysql;
select user,host,plugin from user where user='root';
可以看到加密规则是caching_sha2_password。
- 修改加密规则,依次执行下面命令
use mysql;
alter user 'root'@'%' identified with mysql_native_password by '数据库密码';
flush privileges; 刷新权限
-
再次查看加密规则可以发现已经改为mysql_native_password
-
再次通过navicat连接Mysql发现可以登录成功