解决Authentication method 'caching_sha2_password' not supported的问题

一、错误描述

在使用MySQL8.0连接数据库时,大多数人会遇到这样的连接错误:
Connection open error . Authentication method 'caching_sha2_password' not supported by any of the available plugins.

二、问题分析

mysql_native_password和caching_sha2_password(8.0新增的)是 MySQL 数据库中用于用户身份验证的两种不同的插件。它们的区别:

mysql_native_password:使用的是相对简单的旧版加密算法。它将用户密码以明文形式传输到服务器,然后在服务器端使用 PASSWORD() 函数进行加密存储。这种加密方式相对较弱,安全性较低。

caching_sha2_password:采用了更为强大的哈希算法对用户密码进行加密。caching_sha2_password 使用的是其中的 SHA-256 算法。这种加密方式生成的哈希值长度更长,计算复杂度更高,破解难度更大,从而提供了更高的安全性。

因此,解决有的两种方案,一是从数据库层面修改mysql设置使用其使用mysql_native_password方式验证;二是从数据访问层面,更新数据库连接驱动使支持caching_sha2_password。

三、解决方案

1、方案一(简单,不安全)

打开C:\ProgramData\MySQL\MySQL Server 8.0\my.ini配置文件,增加设置,重启mysql服务。

default_authentication_plugin=mysql_native_password

image

很多人说这种方法无效,这是因为它只能针对新建的用户有效,对于已创建的root用户无效。

image

可查询当前用户的验证方式:

SELECT user,pluginFROMuser;

image

因此,将root用户的认证方式改为mysql_native_password可解决报错问题:

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

2、方案二(安全,更彻底)

更新数据库连接驱动使支持caching_sha2_password。

posted @ 2025-08-08 07:21  我也是个傻瓜  阅读(143)  评论(0)    收藏  举报