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

更新MySql.Data至8.0.27以上版本后无法连接MySQL数据库求助

.NET Framework 4.7.2 下 MySql.Data 8.0.27+ 连接失败问题排查与修复

常见问题原因及修复方案

1. TLS 协议版本不兼容

MySql.Data 8.0.27及以上版本默认强制使用TLS 1.2+,但部分旧版MySQL服务器(如5.7早期版本)未启用该协议,或者你的.NET Framework应用默认没开启TLS 1.2支持,导致握手失败。

修复操作:

  • 在应用启动代码中添加TLS配置:
    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls13;
    
  • 或者在app.config/web.config里配置:
    <configuration>
      <system.net>
        <settings>
          <servicePointManager securityProtocol="Tls12,Tls13" />
        </settings>
      </system.net>
    </configuration>
    

2. 连接字符串参数校验变严格

新版驱动对连接字符串的参数校验更严格,比如旧版可省略的SslMode参数,现在必须明确指定,否则会触发连接错误。

修复操作:

  • 给连接字符串添加SslMode参数,根据服务器SSL配置选择对应值:
    • 服务器未开SSL:SslMode=None
    • 需要SSL连接:SslMode=Required
      示例连接字符串:
    Server=你的服务器地址;Database=你的数据库名;Uid=用户名;Pwd=密码;SslMode=None;
    

3. 身份验证插件不匹配

MySQL 8.0默认用caching_sha2_password身份验证插件,若你的数据库用户仍使用旧的mysql_native_password,新版驱动可能无法正常验证。

修复操作:

  • 切换数据库用户的身份验证插件:
    ALTER USER '你的用户名'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
    FLUSH PRIVILEGES;
    
  • (仅测试/可控环境用)在连接字符串添加AllowPublicKeyRetrieval=True参数,跳过部分验证(注意:此操作有安全风险)

4. 驱动依赖项缺失

8.0.27+版本的MySql.Data依赖MySqlConnector等组件,若NuGet安装时未同步拉取依赖,会导致运行时缺失组件报错。

修复操作:

  • 卸载当前MySql.Data包,重新安装,确保所有依赖项(如MySqlConnector、System.Buffers)都正确安装
  • 检查项目的packages.config或PackageReference,确认依赖版本和MySql.Data匹配

5. 系统级TLS配置未开启

.NET Framework 4.7.2本身支持TLS 1.2,但部分环境需要手动修改注册表开启:

  • 32位系统注册表项:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
    "SchUseStrongCrypto"=dword:00000001
    
  • 64位系统注册表项:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
    "SchUseStrongCrypto"=dword:00000001
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:50:43