MySQL8.0登录提示caching_sha2_password问题解决方法

时间:2022-12-11 09:57:29

背景

用​​docker​​构建mysql容器后连接遇到以下问题

问题

Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found

mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]

mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

解决方法1(docker)

适用场景

  1. 第一次构建容器/安装
  2. 已安装完成后新增用户

配置

配置 mysql.cnf 配置默认身份验证插件

[mysqld]

default_authentication_plugin = mysql_native_password

验证是否生效

使用CLI进入MySQL

$ mysql -u root -p

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database changed

mysql> SELECT Host, User, plugin from user;

+-----------+------------------+-----------------------+

| Host      | User             | plugin                |

+-----------+------------------+-----------------------+

| %         | root             | mysql_native_password |

| localhost | mysql.infoschema | caching_sha2_password |

| localhost | mysql.session    | caching_sha2_password |

| localhost | mysql.sys        | caching_sha2_password |

| localhost | root             | mysql_native_password |

+-----------+------------------+-----------------------+

5 rows in set (0.00 sec)

root用户的身份验证器插件已经变为:mysql_native_password

解决方法2

适用场景

  1. MySQL 已成功安装完成后

查看身份验证类型

mysql> use mysql;

Database changed


mysql> SELECT Host, User, plugin from user;

+-----------+------------------+-----------------------+

| Host      | User             | plugin                |

+-----------+------------------+-----------------------+

| %         | root             | caching_sha2_password |

| localhost | mysql.infoschema | caching_sha2_password |

| localhost | mysql.session    | caching_sha2_password |

| localhost | mysql.sys        | caching_sha2_password |

| localhost | root             | caching_sha2_password |

+-----------+------------------+-----------------------+

5 rows in set (0.00 sec)

​root​​ 用户的验证器插件为 caching_sha2_password

修改身份验证类型(修改密码)

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

Query OK, 0 rows affected (0.00 sec)


mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

Query OK, 0 rows affected (0.01 sec)

使生效

mysql> FLUSH PRIVILEGES;

验证是否生效

mysql> SELECT Host, User, plugin from user;

+-----------+------------------+-----------------------+

| Host      | User             | plugin                |

+-----------+------------------+-----------------------+

| %         | root             | mysql_native_password |

| localhost | mysql.infoschema | caching_sha2_password |

| localhost | mysql.session    | caching_sha2_password |

| localhost | mysql.sys        | caching_sha2_password |

| localhost | root             | mysql_native_password |

+-----------+------------------+-----------------------+

5 rows in set (0.00 sec)