版本信息
Server version: 8.0.21
问题
使用docker
在服务器上运行了一个mysql
容器,进入容器内部登录mysql
正常,端口已映射到虚拟机上,访问正常。
使用工具连接,确认用户名、密码和IP端口正确的情况下报错:
1
| Authentication method 'caching_sha2_password' not supported by any of the available plugins
|
原因
这个问题的根本其实就是登陆加密的规则不一样,mysql8
之前的版本使用的密码加密规则是mysql_native_password
,但是在mysql8
则是caching_sha2_password
,导致用户验证无法通过。
解决
配置修改
找到安装目录的my.cnf
配置文件,在[mysqld]
下添加配置语句:
1 2
| [mysqld] default_authentication_plugin=mysql_native_password
|
然后重启服务。
注意!这个配置的修改只对新添加的用户起作用,老用户还是原来的加密规则。
手动恢复
需要进行手动修改,例如需要改用户gva
的密码加密规则:
查看用户信息
1 2 3 4 5 6 7 8 9
| use mysql;
select user,host,plugin,authentication_string from user where user = 'gva'; +------+------+-----------------------+-------------------------------------------------+ | user | host | plugin | authentication_string | +------+------+-----------------------+-------------------------------------------------+ | gva | % | caching_sha2_password | ';&Jn95RGmCy6X9.rXONFxcVTY3a.9oPnaZQBJGGKWEXWN8 | +------+------+-----------------------+-------------------------------------------------+ 1 row in set (0.00 sec)
|
修改用户密码加密规则
1 2 3 4 5 6 7 8 9 10 11 12
| alter user 'gva' @'%' identified with mysql_native_password by '123456';
FLUSH PRIVILEGES;
select user,host,plugin,authentication_string from user where user = 'gva'; +------+------+-----------------------+-------------------------------------------+ | user | host | plugin | authentication_string | +------+------+-----------------------+-------------------------------------------+ | gva | % | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +------+------+-----------------------+-------------------------------------------+ 1 row in set (0.00 sec)
|
备注
本文参考网络
以上。