一、报错详情
docker安装mysql之后,用Navicat连接,然后报错:
2059 - Authentication plugin 'caching_sha2_password' cannot be loaded
去网上找了各种办法,总是没解决,后面终于发现,远程连接和本地连接配置上还有点区别
二、原因
由于目前已有的客户端连接软件还不支持Mysql8新增加的加密方式:caching_sha2_password
所以我们需要修改用户的加密方式,将其改为老的加密验证方式:mysql_native_password
其实解释网上千篇一律,都是一个道理
三、解决方法
# 运行Mysql容器
docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf mysql:8.0.27
这时候用Navicat连接,然后报错:2059 - Authentication plugin 'caching_sha2_password' cannot be loaded
# 进入容器
docker exec -it mysql /bin/bash
# 进入mysql
mysql -uroot -p123
# 进入mysql表
use mysql;
下面一步就是最重要的,如果是远程连接,请将'localhost'换成 '%' !!!!!!!!!!!!
# 修改加密方式,如果是远程连接,请将'localhost'换成'%'
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
#刷新权限
FLUSH PRIVILEGES;
最后退出容器,重启容器
# 退出mysql 退出容器
exit
# 重启容器
docker restart mysql
好了,大功告成了!!!现在就能用Navicat进行远程连接了