2013-04-21 110 views
0

我在C#和MySQL中创建了一个系统,但我一直收到这个令人沮丧的错误,“无法连接到任何指定的MySQL主机”。我尝试了许多不同的东西,但没有任何工作,有人可以试图帮助我吗?C# - 无法连接到任何指定的MySQL主机

public bool tryLogin(string username, string password) 
    { 
     MySqlConnection con = new MySqlConnection("host=hostremoved;user=user_removed;password=passwordremoved;database=databaseremoved;"); 
     MySqlCommand cmd = new MySqlCommand("SELECT * FROM login WHERE user_name = '" + username + "' AND user_pass = '" + password + "';"); 
     cmd.Connection = con; 
     con.Open(); 
     MySqlDataReader reader = cmd.ExecuteReader(); 
     if (reader.Read() != false) 
     { 

      if (reader.IsDBNull(0) == true) 
      { 
       cmd.Connection.Close(); 
       reader.Dispose(); 
       cmd.Dispose(); 
       return false; 
      } 
      else 
      { 
       cmd.Connection.Close(); 
       reader.Dispose(); 
       cmd.Dispose(); 
       return true; 
      } 
     } 
     else 
     { 
      return false; 
     } 
    } 

    private void btnlogin_Click(object sender, EventArgs e) 
    { 
     if (tryLogin(txtuser.Text, txtpass.Text) == true) 
     { 
      MessageBox.Show("Login worked!"); 
     } 
     else 
     { 
      MessageBox.Show("Login failed!"); 
+0

**不要以纯文本格式存储密码** – SLaks 2013-04-21 21:32:43

+0

您有一个SQL注入漏洞。 – SLaks 2013-04-21 21:33:12

+3

好的,我会解决这两件事情,但是你知道如何帮助解决我需要帮助的实际问题吗? – Marooca 2013-04-21 21:41:44

回答

0

这是防火墙问题吗?检查运行MySql实例的计算机是否能够通过防火墙接受连接。

+0

这可能是,但我并不确定如何访问防火墙设置,因为服务器没有托管在我自己的机器上。有没有办法通过PhpMyAdmin或其他? – Marooca 2013-04-21 21:55:21

+0

好吧,不要介意,我已将我的IP列入白名单,但它仍然无法使用,有什么建议? – Marooca 2013-04-21 22:43:10

+0

此数据库是由第三方公司托管还是由您控制的?您的数据库是否配置为仅侦听本地端口? – pmcilreavy 2013-04-21 23:09:40

1

如果它不是防火墙,并且数据库设置为侦听远程连接,那么您应该检查您的用户凭证是否已配置,以便指定的数据库将接受来自给定IP的连接。如果用户只能从本地主机连接,那么你就需要以root登陆,并发出一个GRANT语句,如:

GRANT ALL ON yourDbName.* TO 'yourUser'@'yourIP' IDENTIFIED BY "yourPassword"; 

更多关于使用GRANT,请参阅:

http://dev.mysql.com/doc/refman/5.1/en/grant.html

0

感谢大家的帮助!我必须在我的防火墙上将我的IP列入白名单,并且工作正常!

相关问题