解决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
很多人说这种方法无效,这是因为它只能针对新建的用户有效,对于已创建的root用户无效。
可查询当前用户的验证方式:
SELECT
user,
pluginFROM
user;
因此,将root用户的认证方式改为mysql_native_password可解决报错问题:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
2、方案二(安全,更彻底)
更新数据库连接驱动使支持caching_sha2_password。
作者:我也是个傻瓜
出处:http://www.cnblogs.com/liweis/
签名:成熟是一种明亮而不刺眼的光辉。
