在远程服务器连接MYSQL 8.0数据库时出现如下错误:

ERROR 2059 (HY000): 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 8.0开始默认密码插件为caching_sha2_password,旧的客户端上面没有这个插件,所以报错。

解决思路有两种:

  1. 客户端安装插件;
  2. 修改MySQL账号使用native加密方式。

第一种方法:升级MySQL客户端到最新版本,让客户端支持MySQL8.0的插件。

第二种方法有两种实现方式,更具需要修改:

一是给单独指定用户修改native加密方式;

mysql> select user,host,plugin,authentication_string from mysql.user where user = 'user1' \G
*************************** 1. row ***************************
                 user: user1
                 host: %
               plugin: caching_sha2_password
authentication_string: 4im8KHnanNPJwRDVAItRhIE4h1hWv0hAcTBW1HH1mp0P&/G
 
mysql> ALTER USER 'user1'@'%' IDENTIFIED WITH 'mysql_native_password' BY '**************';
Query OK, 0 rows affected (0.02 sec)
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
 
mysql> select user,host,plugin,authentication_string from mysql.user where user = 'user1' \G
*************************** 1. row ***************************
                 user: cindy
                 host: %
               plugin: mysql_native_password
authentication_string: *8D9EF6E3AC0CD4EB7A1FF096D3141F60BFA6104F
1 row in set (0.00 sec)

二是直接修改MySQL服务端配置文件,默认使用native加密方式:

systemctl stop mysqld
#停止MySQL服务
vi /etc/my.cnf
#修改MySQL配置文件,打开下面这一行配置的注释,如果没有就自行添加上
default-authentication-plugin=mysql_native_password
#启动MySQL服务
systemctl start mysqld

使用这种方式修改了服务端默认配置以后,新创建的用户都默认使用native的验证方式,不需要在创建用户时单独指定mysql_native_password