【问题标题】:Unable to connect to any specified mysql C#无法连接到任何指定的mysql C#
【发布时间】:2018-03-19 06:48:00
【问题描述】:

我无法连接到我的 sql 服务器,我尝试了一些来自 stackoverflow 和 google 的修复,但它没有帮助我。谢谢。

  connString = "SERVER ='''myserverip''';PORT=3306;DATABASE=mydatabase;UID=myuser;PASSWORD=mypassword";
        try
         {
             conn = new MySqlConnection();
             conn.ConnectionString = connString;
             conn.Open();
             MessageBox.Show("Connection success");

         }
         catch (MySql.Data.MySqlClient.MySqlException ex)
         {
             MessageBox.Show(ex.Message);
         }

为了配置 myuser,我在我的 linux vps 上使用了它。

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword'; GRANT ALL ON *.* TO 'myuser'@'localhost'; GRANT ALL ON *.* TO 'myuser'@'%';

我试过:Unable to connect to any of the specified mysql hosts. C# MySQL(我尝试使用 MySqlConnectionStringBuilder,不要指定端口,而不是我输入 psw 的连接字符串中的密码); 禁用我的电脑防火墙,禁用 linux 服务器防火墙

【问题讨论】:

  • 异常信息是什么意思?
  • @Dale_dale12 "无法连接到任何指定的mysql主机"

标签: c# mysql linux


【解决方案1】:

MySqlConnectionStringBuilder 是否使您能够指定端口。刚刚测试过,效果很好:

MySqlConnectionStringBuilder csb = new MySqlConnectionStringBuilder();
csb.Server = "192.168.1.105";
csb.Port = 3307;
csb.Database = "test";
csb.UserID = "me";
csb.Password = "mypassword";

cn = new MySqlConnection(csb.ToString());
cn.Open();

您确定您的 MySql 服务器实际上接受通过 TCP 的传入连接吗?默认情况下禁用。

【讨论】:

  • 同样的错误,无法连接...也许是我创建用户的方式有问题?
  • 好吧,首先怀疑,MySql 服务器不允许传入的 TCP 连接。我记得你必须明确启用它。请参阅有关该主题的另一篇 SO 帖子:stackoverflow.com/questions/14779104/…
  • 您只授予本地主机上的用户访问权限。假设:该服务器与您尝试连接的服务器不在同一台机器上?
  • 我使用了 CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
  • 我怀疑问题出在GRANT ALL ON *.* TO 'myuser'@'localhost'; GRANT ALL ON *.* TO 'myuser'@'%'; 部分具体来说,您将对 myuser 的网络访问限制为 localhost。该用户将无法从另一台计算机进行连接。试试这个:GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.%.%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
【解决方案2】:

所以,在谷歌上搜索了如何在 linux 中设置 sql 连接,并尝试了不同的设置后,我几乎没有修复它,所以我想与 stackoverflow 分享我是如何修复它的。感谢@Avo Nappo的帮助。

首先,您需要从您的 sql 配置中注释掉 #bind-address 行。 这里接受的答案:MySQL root access from all hosts

然后我使用这个命令创建一个用户CREATE USER 'golden'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%'; 在 c# 中,我使用了问题中的默认连接字符串。我不知道为什么,但 MySqlConnectionStringBuilder 在我的电脑上不起作用。我希望这会对某人有所帮助。祝你有美好的一天,继续编码。

【讨论】:

    【解决方案3】:

    你必须进入你的Remote MySQL in your C-Pannel并首先添加访问主机并更改此代码

    connString = "SERVER ='''myserverip''';PORT=3306;DATABASE=mydatabase;UID=myuser;PASSWORD=mypassword";
    

    connString = "SERVER =*Put here your Hostname with Port*;DATABASE=mydatabase;UID=myuser;PASSWORD=mypassword;";
    

    或者使用这个方法

    MySqlConnectionStringBuilder ConStD = new MySqlConnectionStringBuilder();
    
    ConStD.Server = "Hostname that get from Manage Access Hosts";
    ConStD.Port = Port that get from Manage Access Hosts;
    ConStD.Database = "YourDatabaseName";
    ConStD.UserID = "yourUsername";
    ConStD.Password = "yourpassword";
    
    try
    {
        MySqlConnection conn = new MySqlConnection(ConStD.ToString());
        conn.Open();
        MessageBox.Show("connection Success");
    }
    catch (MySqlException ex)
    {
        MessageBox.Show(ex.Message);
    }
    

    它必须为您工作

    【讨论】:

      猜你喜欢
      • 2013-08-02
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 2018-12-25
      • 2011-06-07
      相关资源
      最近更新 更多