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

C#使用计算机名作为Host连接MySQL失败如何解决?

问题原因

  • 主机名解析协议不匹配:你的计算机名COMP-18TN默认被解析为IPv6本地回环地址::1,但MySQL服务配置仅绑定了IPv4地址127.0.0.1,未监听IPv6地址导致连接失败。MySQL Workbench会自动适配IPv4/IPv6协议,因此可以正常连接,而C#使用的MySQL连接器默认优先走IPv6解析。
  • 连接字符串参数缺失:新版本的MySQL官方连接器默认开启SSL连接校验,本地部署的MySQL默认未开启SSL配置,用本地主机名连接时会触发SSL校验失败,而localhost/127.0.0.1默认会跳过SSL校验规则。
  • 本地DNS解析异常:系统的hosts文件没有配置计算机名到本地回环地址的映射,导致计算机名被解析到了其他非本地IP。

解决方案

方案1:调整连接字符串参数

直接在原有连接字符串中添加UseIPv6=false强制使用IPv4解析主机名,同时添加SslMode=None关闭SSL校验即可,修改后的代码如下:

string host = "COMP-18TN";
string DatabaseName = "Cars_DB";
string UserName ="root_name";
string Password ="pass";
string connString = string.Format("Server={0}; Port=3306; database={1}; UID={2}; password={3}; SslMode=None; UseIPv6=false;",
               host, DatabaseName, UserName, Password);
MySqlConnection conn = new MySqlConnection(connString);
try
{
    conn.Open();
    
}
catch (Exception e)
{
    MessageBox.Show(e.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

方案2:修改MySQL监听配置

找到MySQL配置文件my.ini(Windows)或my.cnf(Linux),修改bind-address参数为0.0.0.0(监听所有IPv4地址)或者同时配置监听IPv6地址,修改完成后重启MySQL服务即可。

方案3:修改本地hosts映射

  1. 用管理员权限打开记事本,打开路径C:\Windows\System32\drivers\etc\hosts文件
  2. 在文件末尾添加一行:127.0.0.1 COMP-18TN
  3. 保存文件后,打开cmd执行ipconfig /flushdns刷新DNS缓存,再重新运行代码即可。

可选排查项

如果以上方案都无效,可执行MySQL命令SELECT host,user FROM mysql.user WHERE user='root_name';确认你的数据库账号允许从COMP-18TN主机登录,若没有对应权限可执行授权命令:GRANT ALL PRIVILEGES ON Cars_DB.* TO 'root_name'@'COMP-18TN'; FLUSH PRIVILEGES;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:54:05