今天在使用MySQL的一个性能监控工具mycheckpoint过程中,遇到一个很奇怪的问题,报错如下:
(2059, “Authentication plugin ‘caching_sha2_password’ cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory”)
从字面意思来看,是说MySQL的客户端无法加载caching_sha2_password插件。这个问题有点奇怪,按理说客户端正常使用的呀,为什么不能加载这个插件呢?
排查思路
针对这个问题,排查思路如下,
- 这个插件是什么?
- 我的MySQL版本是什么,难道和版本有关系?
- 这个插件是不是可以调整
资料解释
带着问题,我查阅了一些资料,总结如下:
在MySQL8.0以前,MySQL用户的加密规则使用的是:mysql_native_password
在MySQL8.0开始,MySQL用户的加密规则使用的是:caching_sha2_password
如果从MySQL5.7升级到8.0,那么老用户的加密规则使用的仍是:mysql_native_password,而新用户使用的则是caching_sha2_password。
当然了,我的MySQL版本是8.0.26,所以会出现此类问题。
修改插件
既然这个性能监控工具mycheckpoint,不能使用caching_sha2_password插件,如何修改呢?
1. 查看插件
mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
| localhost | test | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)
2. 三种修改方式
a. 配置文件全局修改
编辑配置文件my.cnf,这样
将原始配置
[mysqld]
# The default authentication plugin to be used when connecting to the server
default_authentication_plugin = caching_sha2_password
修改为
[mysqld]
# The default authentication plugin to be used when connecting to the server
default_authentication_plugin = mysql_native_password
b. 单独命令用户修改
针对某一个用户,我们单独修改
mysql> alter user 'test'@'localhost' identified with mysql_native_password by '123456';
mysql> alter user 'test'@'localhost' identified by '123456';
mysql> flush privileges;
c. 适配升级客户端
既然工具客户端不支持,那么我们可以升级工具的客户端,使其支持MySQL8.0的caching_sha2_password加密规则插件即可(前提是这个工具客户端能这样升级)