新建MySQL实例用户认证自动设为caching_sha2_password,.NET Core无法连接
解决MySQL用户认证类型自动跳回caching_sha2_password的问题
看起来你遇到的核心问题是MySQL默认认证插件的配置没真正生效,加上创建/修改用户时没明确指定认证方式,导致手动修改后又被打回原形。下面给你一步步解决的方案:
1. 确保MySQL配置文件的修改正确生效
首先,你需要确认default_authentication_plugin的配置写对了位置,且被MySQL成功加载:
- 找到你的MySQL配置文件:Linux一般是
/etc/my.cnf或/etc/mysql/my.cnf;Windows则在C:\ProgramData\MySQL\MySQL Server X.X\my.ini(注意ProgramData是隐藏文件夹,需要开启显示隐藏项)。 - 打开文件,在
[mysqld]段落下添加或修改:default_authentication_plugin=mysql_native_password - 保存后重启MySQL服务:Linux用
sudo systemctl restart mysql;Windows在服务管理器里找到MySQL服务重启。
2. 验证默认认证插件是否生效
登录MySQL命令行,执行以下SQL查看当前全局默认值:
SELECT @@default_authentication_plugin;
如果返回的是mysql_native_password,说明配置生效了;如果还是caching_sha2_password,那你需要检查:
- 配置文件的
[mysqld]段落是否写对(别误写到[mysql]或其他段落里); - 用
SHOW VARIABLES LIKE 'config_file';查看MySQL实际加载的配置文件路径,确认你修改的是正确的文件。
3. 创建/修改用户时强制指定认证插件
就算默认配置生效了,有时候创建用户时可能还是会出现异常,所以建议你在创建或修改用户时明确指定认证插件,彻底避免自动切换:
- 创建新用户:
CREATE USER '你的用户名'@'允许访问的主机(比如localhost或%)' IDENTIFIED WITH mysql_native_password BY '你的密码'; - 修改已有用户:
ALTER USER '你的用户名'@'允许访问的主机' IDENTIFIED WITH mysql_native_password BY '你的密码';
执行完后,再去Workbench里查看用户的认证类型,应该就会保持为mysql_native_password(对应Workbench里的“Standard”选项)了。
额外说明:关于.NET Core连接的问题
其实现在最新版的MySqlConnector驱动已经支持caching_sha2_password认证了,如果你不想改MySQL的认证方式,也可以尝试升级你的.NET Core项目中的MySqlConnector包到最新版本。不过既然你已经想切换到mysql_native_password,按上面的步骤应该就能解决问题。
内容的提问来源于stack exchange,提问作者Matthew van Boheemen
相关产品推荐
相关产品推荐

