2013-12-08 49 views
0

我只是在我的工具,連接到我租用的MySql數據庫工作。 (對於理論來說太多了)。 是的,它適用於下面的代碼,但只適用於localhost。 (數據被刪)連接到MySql數據庫不可能 - 「選擇命令拒絕用戶[...]」

以下字符串被放置到類 「Common.cs」

// String which is used to connect 
    public static string myConnection = @"datasource=****.****.****.com;port=3306;username=****;password=****;" 

以下代碼放置到 「frmMain.cs」

// The code of the procedure which is used to connect 
     private void btnConnect_Click(object sender, EventArgs e) 
    { 
     string username = textUsername.Text; 
     string password = textPassword.Text; 

     try 
     { 
      MySqlConnection myConn = new MySqlConnection(Common.myConnection); 

      MySqlCommand SelectCommand = new MySqlCommand("SELECT * from ha_system.main where name='" + username + "' and password='" + password + "' ;", myConn); 

      MySqlDataReader myReader; 

      myConn.Open(); 
      myReader = SelectCommand.ExecuteReader(); 
      int count = 0; 

      //myReader loads data 
      while (myReader.Read()) 
      { 
      // [...] 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

所以問題是,它在連接此異常時拋出我: 「SELECT命令被拒絕給用戶'xxxxxx'@'xxxxxxxxxxxxxxxxxxxx'for table'main'」

同樣當我嘗試連接到一個db4free.com的數據庫。這些數據絕對正確,我有權連接或選擇,等等。 (我已經聯繫過該公司幫助我,他們說我擁有所有必需的權限,並且他們無法爲我做任何事情。)

注意:我也可以用Navicat或其他程序連接到這個db來管理MySql服務器。

那麼可能是什麼錯誤?爲什麼會出現以及如何解決? 在此先感謝。

Regards,

Me。

回答

0

我不知道這是不是原因,但字符串連接是一件壞事。如果您的用戶名或密碼變量包含單引號,則整個命令將無效。 並且不要忘記Sql Injection的問題。

你可以嘗試改變這種方式

string username = textUsername.Text; 
string password = textPassword.Text; 

try 
{ 
    string cmdText = "SELECT * from ha_system.main where [email protected] AND and [email protected]"; 
    using(MySqlConnection myConn = new MySqlConnection(Common.myConnection)) 
    using(MySqlCommand SelectCommand = new MySqlCommand(cmdText, myConn)) 
    { 
     myConn.Open(); 
     SelectCommand.Parameters.AddWithValue("@uname", username); 
     SelectCommand.Parameters.AddWithValue("@pwd", password); 
     using(MySqlDataReader myReader = SelectCommand.ExecuteReader()) 
     { 
      .... 
     } 
    } 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 
+0

謝謝你試圖幫助我。它沒有變好,出現同樣的錯誤。 – user3080573

+0

我建議在嘗試從遠程客戶端連接時查看分配給用戶的權限。錯誤信息包含'user @ host',因此從遠程客戶端連接時似乎是一個問題。使用可以在網絡上工作的管理工具,併爲用戶可以連接的主機指定'%'。 – Steve

0

默認情況下你的代碼,所有IP被封鎖,必須添加到一個訪問列表,以訪問服務器。因此,在從另一臺計算機連接到MySQL之前,必須啓用連接計算機作爲訪問主機。

如果您不知道您的IP地址,請通過here找到它。

此外,具有動態IP地址意味着連接IP地址可以定期更改,具體取決於Internet服務提供商(ISP)。每次更改遠程MySQL時,都必須更新連接IP。

當使用cPanel的X3主題

  1. 登錄到的cPanel。
  2. 在數據庫下,單擊遠程MySQL圖標。
  3. 在主機字段中輸入連接的IP地址。
  4. 點擊添加主機。

您現在應該可以遠程連接到您的數據庫。

相關問題