Saki's 研究记录

MySQL: Authentication plugin 'caching_sha2_password'

字数统计: 381阅读时长: 1 min
2021/11/29

版本信息

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;
# 查看用户 gva 的密码加密规则
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)

备注

本文参考网络

以上。

CATALOG
  1. 1. 版本信息
  2. 2. 问题
  3. 3. 原因
  4. 4. 解决
    1. 4.1. 配置修改
    2. 4.2. 手动恢复
      1. 4.2.1. 查看用户信息
      2. 4.2.2. 修改用户密码加密规则
  5. 5. 备注