背景

在服务器使用docker安装了mysql 8.0.23,本地使用navicat链接远程服务器mysql,MySQL的错误2059,提示无法加载认证插件'caching_sha2_password'。

image.png

出错原因

这个错误通常出现在较旧的MySQL客户端连接到MySQL 8.0及以上版本的服务器时,因为MySQL 8.0默认使用了新的认证插件caching_sha2_password,而旧版本的客户端可能不支持这个插件。用户可能在安装或升级MySQL后,尝试用旧版的客户端工具(比如MySQL Workbench的旧版本,或者某些应用程序使用的旧驱动)连接时遇到这个问题。

解决思路

解决这个问题的方法有几个可能的途径。首先是升级客户端工具或驱动,确保它们支持新的认证插件。如果用户无法升级客户端,可能需要修改MySQL服务器的用户认证方式,回退到旧的mysql_native_password插件。或者,调整服务器的默认认证插件设置。

解决方法

方法 1:升级客户端工具或驱动

推荐做法:升级到支持新认证插件的客户端。

更新 navicat 到最新版。

编程语言驱动更新(如 Python 的 mysql-connector-python、Node.js 的 mysql2、PHP 的 mysqli 扩展等)。

使用 JDBC 驱动时,确保版本 ≥ 8.0.11。

方法 2:修改用户认证方式(降级插件)

如果无法升级客户端,可将用户的认证插件改为旧版 mysql_native_password:

image.png

2.1 以 root 用户登录 MySQL:
mysql -u root -p
2.2 修改用户密码和插件:

//修改指定用户的插件和密码(替换 'your_user' 和 'your_password')

ALTER USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
2.3 查看确认
select user,plugin,host from user ;

image.png

2.4 刷新权限
FLUSH PRIVILEGES;

退出并重新连接测试:

方法 3:修改 MySQL 默认认证插件

直接修改 MySQL 服务器的默认认证插件(需谨慎,影响新创建的用户):

编辑 MySQL 配置文件:

Linux: /etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf

Windows: C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

在 [mysqld] 部分添加:

default_authentication_plugin = mysql_native_password

重启 MySQL 服务:

sudo systemctl restart mysql

重新链接测试

image.png


杨帆
28 声望3 粉丝