当我们在docker上部署项目时,我们有时通常会直接下载最新版,8.0等版本,但是我们的客户端链接工具可能是5.0等等的版本
这里就会有一个问题,明明你在虚拟机上可以登录,运行正常,但是你远程链接mysql时就会报错误2059,这是因为当你使用的是新版本的MySQL,它默认使用caching_sha2_password
作为认证插件,而客户端库可能还没有更新来支持这种新的加密方式。
解决方法有两个:
1.升级你的MySQL客户端库到支持caching_sha2_password
的版本
2.如果你不能升级客户端库,你可以更改MySQL用户的认证插件回到mysql_native_password
:
首先进入这个容器,登录mysql
--登录容器
docker exec -it mysql bash
--登录mysql
mysql -u root -p
运行下面的命令
use mysql;
--回到之前的认证插件
ALTER USER 'root'@'%' IDENTIFIED WITH 'mysql_native_password' BY '123456
--刷新生效
flush privileges;
成功就是这个样子的:
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH 'mysql_native_password' BY '123456';
Query OK, 0 rows affected (0.05 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)