You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在C#中使用SSL证书连接远程MySQL服务器?

使用C#通过SSL证书连接远程MySQL服务器

你已经选对了用MySqlConnectionStringBuilder构建连接串的路子,我把代码补全整理好,同时给你提几个容易踩坑的关键点:

完整可运行的连接代码示例

// 初始化连接串构建器
MySqlConnectionStringBuilder db = new MySqlConnectionStringBuilder();
db.Server = "1.2.3.4"; // 远程MySQL服务器公网IP
db.Port = 3306; // 这里建议用整数类型,比字符串更稳妥
db.UserID = "jerry";
db.Password = "jerrypassword";
db.Database = "wordpress";
// 指定本地PEM格式的客户端证书路径
db.CertificateFile = certificatePathToPem;
// 如果证书设置了密码就填,无密码可直接注释这行
db.CertificatePassword = certificatePassword;
// 强制启用SSL加密,这步很关键,不然证书可能不生效
db.SslMode = MySqlSslMode.Required;

// 生成最终的连接字符串
string MySqlConnectionString = db.ToString();

// 用using块管理连接,自动释放资源
using (MySqlConnection connection = new MySqlConnection(MySqlConnectionString))
{
    try
    {
        connection.Open();
        Console.WriteLine("远程MySQL连接成功!");
        // 在这里执行你的数据库读写操作
    }
    catch (MySqlException ex)
    {
        Console.WriteLine($"连接失败:{ex.Message}");
    }
}

必须注意的几个细节

  • SSL模式强制开启:一定要显式设置SslMode = MySqlSslMode.Required,不然即使指定了证书,MySQL驱动可能会 fallback 到非加密连接,等于白加证书。
  • 证书有效性:确保你的PEM证书是MySQL服务器端已经配置信任的客户端证书,路径最好用绝对路径,避免程序运行时找不到文件。
  • 服务器端配置:远程MySQL服务器要开放3306端口,并且在mysql.user表中给jerry用户设置允许的连接IP(可以设为%允许所有IP,或者你的客户端公网IP)。
  • 驱动版本:建议使用最新版的MySqlConnector NuGet包,这是官方推荐的.NET驱动,比旧版MySql.Data兼容性和安全性更好。

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

火山引擎 最新活动