You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6环境下使用Dapper连接MySQL失败求助

排查.NET 6 MVC中MySql.Data 8.1.0连接MySQL的认证错误

可能的排查方向及解决方案

1. 确认MySQL用户的认证插件兼容性

MySQL 8.0+默认使用caching_sha2_password认证插件,部分场景下MySql.Data驱动连接时会出现适配问题:

  • 登录MySQL执行以下SQL,查看root@localhost的认证插件:
    SELECT user, host, plugin FROM mysql.user WHERE user = 'root';
    
  • 如果插件是caching_sha2_password,有两种解决方式:
    • (测试环境推荐)修改用户为mysql_native_password插件:
      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
      FLUSH PRIVILEGES;
      
    • 生产环境保留caching_sha2_password,在连接字符串中添加SSL配置:
      "ConnectionString": "server=localhost;port=3306;database=test;user=root;password=root;SslMode=Required;"
      

2. 补充连接字符串的必要参数

MySql.Data 8.x版本需要显式开启公钥获取权限,避免认证失败:
修改appsettings.json中的连接字符串,添加AllowPublicKeyRetrieval=True:

"ConnectionString": "server=localhost;port=3306;database=test;user=root;password=root;AllowPublicKeyRetrieval=True;SslMode=Preferred;"

3. 验证MySQL用户的数据库权限

即使账号密码正确,root@localhost可能没有访问test数据库的权限:

  • 执行SQL检查权限:
    SHOW GRANTS FOR 'root'@'localhost';
    
  • 如果没有test数据库的权限,执行授权命令:
    GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost';
    FLUSH PRIVILEGES;
    

4. 排查自定义MySqlDBHelper的实现问题

你的代码中使用了自定义的MySqlDBHelper,需确认其GetSqlConnection()方法是否正确初始化连接对象:
可以临时替换为直接创建连接进行测试,排除Helper类的问题:

[HttpGet("Add")]
public object Add(string FileName, string FilePath,string ImageUrl)
{
    var connStr = app.Configuration["ConnectionString"];
    var sql = "INSERT INTO image_info (FileName, FilePath, ImageUrl) VALUES (@FileName, @FilePath, @ImageUrl)";
    using var conn = new MySqlConnection(connStr);
    conn.Open();
    var result = conn.Execute(sql, new { FileName, FilePath, ImageUrl });
    return Ok();
}

5. 检查端口连通性与防火墙设置

  • 确认3306端口未被占用:使用Test-NetConnection localhost -Port 3306(PowerShell)或telnet localhost 3306测试端口是否可连通。
  • 检查本地防火墙是否拦截了.NET程序访问3306端口,必要时添加放行规则。

内容的提问来源于stack exchange,提问作者user22299445

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:25:31