如何使用证书颁发机构从C#连接到RDS MySQL数据库?
问题描述:
我正在构建需要连接到AWS RDS MySQL数据库的Xamarin.Mac
应用程序(C#)。如何使用证书颁发机构从C#连接到RDS MySQL数据库?
我的代码:
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand("SELECT * FROM store", connection))
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine("{0} {1} {2}",
reader.GetInt32(0), reader.GetString(1), reader.GetString(2));
}
}
}
哪里我的连接字符串的格式为:
ConnectionString = "Server={0};Database={1}Uid={2};Pwd={3}";
不过,我似乎无法连接。然而,通过MySqlWorkbench使用相同的主机和凭据,我可以很好地连接。我看到我的RDS实例的版本设置为证书颁发机构设置为rds-ca-2015
(没有选项而不是将其设置为此)。
如何使用上面的C#代码连接到此RDS数据库?
答
原来这是不是与我最初认为的证书颁发机构有关。
但是,我想我会发布一个答案,因为我花了很长时间才找到解决方案,其他开发人员希望能找到它的用处。
所以对于其他开发商谁正在使用Xamarin.Mac构建一个OSX的应用程序,你需要到设置项目中使用Xamarin.Mac .NET 4.5 Framework
。这是而不是当启动一个新的OSX项目时的默认值,所以你必须改变它并重新定位你的包。然后,只需添加NuGet包MySql.Data
和更新您的连接代码:
using (MySqlConnection connection = new MySqlConnection(ConnectionString))
{
connection.Open();
using (MySqlCommand command = new MySqlCommand("SELECT * FROM store", connection))
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine("{0} {1} {2}",
reader.GetInt32(0), reader.GetString(1), reader.GetString(2));
}
}
}
工程等之后,一个魅力。