C#Winforms与MySQL AWS数据库的连接

C#Winforms与MySQL AWS数据库的连接,c#,mysql,winforms,amazon-web-services,database-connection,C#,Mysql,Winforms,Amazon Web Services,Database Connection,我正在尝试将winforms.net应用程序与AWS RDS MySQL数据库连接,但连接时遇到困难。我读过很多关于通过Microsoft SQL数据库和Elastic Beanstalk连接的资料,但我还没有找到我想要的答案。。。可能是因为我是个笨蛋 我已经浏览了其中几个问题: 我收到以下错误消息: MySql.Data.MySqlClient.MySqlException:“无法连接到任何指定的MySql主机。” 有什么简单的东西是我遗漏的吗?我已将数据库端点复制到数据库URL位置。我的用

我正在尝试将winforms.net应用程序与AWS RDS MySQL数据库连接,但连接时遇到困难。我读过很多关于通过Microsoft SQL数据库和Elastic Beanstalk连接的资料,但我还没有找到我想要的答案。。。可能是因为我是个笨蛋

我已经浏览了其中几个问题:

我收到以下错误消息:

MySql.Data.MySqlClient.MySqlException:“无法连接到任何指定的MySql主机。”


有什么简单的东西是我遗漏的吗?我已将数据库端点复制到数据库URL位置。我的用户id和密码是正确的。我的数据库在AWS上设置为MySQL数据库。

由于无法连接到主机,因此给出了错误消息

在您的连接字符串中,localhost作为服务器,但您的数据库位于云(AWS)上,因此这意味着您必须指定数据库的IP或指向该数据库的域名,而不是本地(本地指计算机中的)。e、 g

string conn=“server=192.168.0.7;Database=Database\u name;User Id=admin;
密码=我的密码”

请注意,服务器IP是由AWS提供的,您应该确保端口处于启用状态。MySQL最常见的端口是3306

致以最诚挚的问候。

试试这个

   //This is my connection string i have assigned the database file address path  
   string MyConnection2 = 
   "host='localhost';database='databasename';username='myusername';password='mypassword'";
   //This is my insert query in which i am taking input from the user through windows forms  
   string Query = "Your query";
   //This is  MySqlConnection here i have created the object and pass my connection string.  
   MySqlConnection MyConn2 = new MySqlConnection(MyConnection2);
   //This is command class which will handle the query and connection object.  
   MySqlCommand MyCommand2 = new MySqlCommand(Query, MyConn2);
   MySqlDataReader MyReader2;
   MyConn2.Open();
   MyReader2 = MyCommand2.ExecuteReader();     
   // Here our query will be executed and data saved into the database.  
   MessageBox.Show("Save Data");
   while (MyReader2.Read())
   {
   }
   MyConn2.Close();
使用检查会使您的参数名称看起来好像有误。”用户名“”应为“uid”,密码“”应为“pw”

无论如何,我建议使用来构造连接字符串

var connectionStringBuilder = new MySqlConnectionStringBuilder
{
    Server = "<Instance_Ip>",
    UserID = "root",
    Password = "<Password>",
    Database = "<Database_Name>"
};

using (var conn = new MySqlConnection(connectionStringBuilder.ToString()))
var connectionStringBuilder=new MySqlConnectionStringBuilder
{
服务器=”,
UserID=“root”,
密码=”,
Database=“”
};
使用(var conn=new MySqlConnection(connectionStringBuilder.ToString())

您可以使用终端/命令行登录MySQL吗?通常您需要创建防火墙规则以允许访问云数据库服务器(出于安全原因)。“当您首先创建一个DB实例时,它的防火墙阻止任何数据库访问,除非通过关联的安全组指定的规则。”您应该考虑将MySQL实例打开到Internet上的负面影响。任何人在你的应用程序中搜索可读字符串,都会发现你的MySQL服务器的IP地址、管理员用户名和密码,使他们具有完全访问权限。除非你直接在同样包含MySQL服务器的EC2实例上运行/开发此winforms应用程序,否则将localhost作为服务器名称是行不通的。确保MySQL数据库使用的端口对外开放(坏主意),然后将数据库服务器的公共internet IP地址放入连接字符串中,以代替
localhost
-然后读一读为什么这是一个坏主意,并改变周围的情况,使你的应用程序使用web服务或类似服务,并且web服务与mysqlI有一个私人的可信连接。我不确定这是否太有帮助,提供了一个使用192.168.x.x本地lan地址的示例,供未能理解localhost不是其基于云的数据库服务器面向公众的IP的概念的人使用。。
var connectionStringBuilder = new MySqlConnectionStringBuilder
{
    Server = "<Instance_Ip>",
    UserID = "root",
    Password = "<Password>",
    Database = "<Database_Name>"
};

using (var conn = new MySqlConnection(connectionStringBuilder.ToString()))