2013-04-21 78 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列入白名單,並且工作正常!

相關問題