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,只是猜想没有验证,有兴趣的可以验证一下。