docker运行mysql连接失败,SQLYOG:2058,navicat:1251

参考资料:
[1].Mysql 修改密码加密方式
[2].Docker之创建并进入mysql容器
[3].MySQL登录验证方式

用docker运行mysql后远程连接mysql出现SQLYOG:2058/navicat:1251的错误。
谷歌后,一般像[1]会叫我修改SQL密码加密方式,但是我们需要知道怎么进入docker运行的mysql命令行界面,按照[2]运行命令docker exec -it mysql bash即可,但是我按照[1]进行设置后还是同样的错误,原因是因为有多个root用户,我只修改了其中一个root用户的密码加密方式,另外一个没有修改,而且客户端也是通过这个用户进行登陆的。我们输入select user,host,plugin from mysql.user where user = 'root';进行查询,得到以下:

+------+-----------+-----------------------+
| user | host      | plugin                |
+------+-----------+-----------------------+
| root | %         | caching_sha2_password |
| root | localhost | mysql_native_password |
+------+-----------+-----------------------+
2 rows in set (0.00 sec)

于是我们需要修改[1]中修改的命令为ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';,也就是@后面的localhost改为%,还要加上flush privileges才可以生效,然后我们再查询看看,修改成功,客户端登陆也成功。

+------+-----------+-----------------------+
| user | host      | plugin                |
+------+-----------+-----------------------+
| root | %         | mysql_native_password |
| root | localhost | mysql_native_password |
+------+-----------+-----------------------+

你可能感兴趣的:(docker运行mysql连接失败,SQLYOG:2058,navicat:1251)