SqlYog无法连接mysql数据库(包括docker环境)的解决方法

Sqlyog安装后连接mysql数据库,报错:2058.

这是密码加密算法更新导致的,解决如下:

1.打开cmd 连接数据库:

mysql -h localhost -P 3306 -u root -p123456

2.进入mysql依次执行下面语句

①修改加密规则(注意不要忘记写分号“;”)

alter user 'root'@'localhost' identified by 'root' password expire never;

②更新密码为“Root123"

alater user 'root'@'localhost' identified with mysql_native_password by 'Root123';

③刷新权限

flush privileges;

如果是本地安装的mysql数据库,执行完以上步骤再连接应该就没有问题了。

 

但是在docker中安装的mysql这样操作没有解决问题,而且连密码都没有修改成功,不知道是第②步弄错了还是什么原因,执行以下查询语句后发现跟本机安装的mysql查询出来的内容不一样,不知道是不是版本问题。

SELECT HOST,USER,PLUGIN FROM mysql.user;

结果如下:

 

 发现多了一行Host值为“%”的,User为“root”的数据,算法依然是caching_sha2_password.

于是再将这个root用的密码加密算法修改为"mysql_native_password",并将密码修改为 “Root123”

alter user 'root'@'%' identified with mysql_native_password by 'Root123';

刷新权限

flush privileges;

然后再连接就没有问题了。

 

猜想了一下应该是mysql的版本问题,docker中安装的是最新的8.0.19版本,而本机安装的是8.0.11,只是猜想没有验证,有兴趣的可以验证一下。

posted @ 2020-02-09 14:57  Not_to_be_a_loser  阅读(1964)  评论(0编辑  收藏  举报