在 C# 中使用 SSL 连接到 MySQL
Posted
技术标签:
【中文标题】在 C# 中使用 SSL 连接到 MySQL【英文标题】:Connect to MySQL using SSL in C# 【发布时间】:2018-03-14 13:05:39 【问题描述】:我正在使用mysqlConnection
连接到需要 SSL 的 MySQL 服务器:
var connection = new MySqlConnection("Data Source=127.0.0.1;Database=MyDb1;User Id=root;Password=blabla;encrypt=true");
如果服务器不需要 SSL,这会成功,但在服务器上执行 GRANT USAGE ON *.* TO 'root'@'localhost' REQUIRE SSL;
后,它开始失败:
ProviderIncompatibleException:提供程序未返回 ProviderManifestToken 字符串。 ---> MySql.Data.MySqlClient.MySqlException:使用方法“mysql_native_password”对用户“root”的主机“127.0.0.1”进行身份验证失败,并显示消息:用户“root”@“localhost”的访问被拒绝(使用密码:是) ---> MySql.Data.MySqlClient.MySqlException: Access denied for user 'root'@'localhost' (using password: YES)
如何启用 SSL?应该在连接字符串中添加一些内容还是以编程方式完成?
【问题讨论】:
【参考方案1】:好的,经过一番搜索,我在How determine if using SSL in a MySql Connection?找到了答案。
我必须在连接字符串中添加 SSL Mode=Required
而不是 encrypt=true
:
var connection = new MySqlConnection("Data Source=127.0.0.1;Database=MyDb1;User Id=root;Password=blabla;SSL Mode=Required");
现在我遇到了一个新错误 - MySql.Data.MySqlClient.MySqlException: “The host localhost does not support SSL connections.”,但我想我会解决的。
【讨论】:
【参考方案2】:var connection = new MySqlConnection("Data Source=127.0.0.1;Database=MyDb1;User Id=root;Password=blabla;SSL Mode=None");
对我来说工作得很好......
【讨论】:
对于任何寻找这个问题的答案的人来说,这不是它。如您所见,问题是如何使用 SSL,而不是如何禁用它。 当它简单地忽略 SSL 时,它是如何定位在顶部的【参考方案3】:您可以在连接字符串中使用它。
SSL Mode=0
【讨论】:
以上是关于在 C# 中使用 SSL 连接到 MySQL的主要内容,如果未能解决你的问题,请参考以下文章
C#:如何在启用 SSL 的情况下连接到 Active Directory?
启用 SSL 的网站无法连接到本地 C# Web 套接字服务器