mysql - 无法使用 .NET mysql 连接器连接到 mysql rds 实例
问题描述
我们需要在 mysql rds 实例上启用 TLS1.1 连接。我有一个控制台应用程序,用于测试我与 mysql RDS 实例的连接。
与 Infra 团队多次来回后,确认 mysql 实例使用的是 TLSv1.1。请找到我在 mysql 工作台中运行的命令输出:
SHOW GLOBAL VARIABLES LIKE '%version%';
- 显示全局变量,如“%ssl%”
现在这验证了服务器正在使用 TLSv1.1。
连接建立工作 - 工作台
一切正常
连接建立工作 - 使用 mysql.exe (server/bin/)
C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe" -u serverusername -h xxxxxxx.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com dbname -p --ssl-mode=PREFERRED
C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe" -u serverusername -h xxxxxxx.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com dbname-p --ssl-mode=DISABLED
要求输入密码并正常连接
所以现在我们有足够的事实可以说,从这个 aws Vm 我们能够使用工作台和 mysql.exe 实用程序连接到 RDS 实例(都启用了 SSL)
然后接下来我们尝试使用控制台应用程序连接到同一个 RDS 实例,该应用程序使用 mysql 团队提供的 mysql 连接器 DLL。请在下面找到应用程序代码以及 mysql 连接器 dll 版本
代码 :
static void Main(string[] args)
{
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
//ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
Console.WriteLine("making certficate connection");
string connMainOut = connMain();
Console.WriteLine(connMainOut.ToString());
Console.ReadLine();
}
private static string connMain()
{
try
{
MySqlConnection connection = new MySqlConnection(ConfigurationManager.AppSettings["conns"]);
connection.Open();
return connection.ToString();
}
catch (Exception ex)
{
Console.WriteLine("==============================");
Console.WriteLine("connMain" + ex.ToString());
Console.WriteLine("==============================");
return "null";
}
}
MySql 连接器版本:
我的 app.config 看起来像这样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="conns" value="SERVER=xxxxxxxx.xxxxxxxxxxxxx.eu-west-1.rds.amazonaws.com;
database=databasename;
user=username;
PASSWORD=password;
SslMode=PREFERRED;"/>
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
它抛出这个错误
现在使用 SslMode=None;
现在使用 SslMode=REQUIRED ,我得到同样的错误
我们已经为此花费了大量时间,但仍然无法使用 TLS 进行连接。如果需要更多信息,请告诉我。
解决方案
推荐阅读
- java - MediaPlayer 问题:所有歌曲同时播放
- mysql - Sum Column 和 Show 在额外的列中重复
- pytorch - 在 pytorch 训练过程中从 LBFGS 切换到 ADAM 优化器
- python - 如何在 python 中正确使用 MPI.Allgather() 从不同进程中收集不同大小的数组
- java - ReadWriteLock 用于文件的并发访问
- python - 如果行为空,如何检查每一列?
- python-3.x - 实现替代斐波那契数列
- php - 没有库的会话 PHP 的速率限制
- python - 如何解决 2 个级别的 Django 多对多关系
- typescript - 是否可以通过 Typescript 中的映射类型将文字对象中的值(不是键)作为文字而不是其类型(例如字符串)获取?