参考资料:
[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 |
+------+-----------+-----------------------+