2017-09-14 138 views
0

異常說主機'XX'不允許連接到這個MySQL服務器。我使用VB.Net,我有一個連接到MySQL的Connect.vb類,如果不存在查詢,它有一個創建數據庫。主機不允許連接

MySqlConnection conn = new MySqlConnection("server=localhost;uid=root;pwd=root;"); 
     MySqlCommand pst = new MySqlCommand(); 
     try 
     { 
      conn.Open(); 
      pst.Connection = conn; 
      pst.CommandText = "CREATE DATABASE IF NOT EXISTS StocksManagerDB"; 
      pst.ExecuteNonQuery(); 
      conn.Close(); 
      conn = new MySqlConnection("server=localhost;database=StocksManagerDB;uid=root;pwd=root;"); 
      conn.Open(); 
      conn.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Failure to connect to database.\nApplication will now exit.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      conn.Close(); 
      Application.Exit(); 
     } 

創建數據庫查詢正確執行。 但是當我登錄登錄表單時,它給了我這種例外。 我已經試過this但它仍然給我同樣的例外。 這是登錄的代碼。在加載事件我把這種

conn = Connect.ConnectDB() 

,這是代碼時FO在登錄時button_click事件

conn.Open(); 
      pst.CommandText = "SELECT * FROM tblLogin WHERE `Username` ='" + txtUsername.Text + "' AND `Password` ='" + txtPassword.Text + "'"; 
      rs = pst.ExecuteReader(); 
      if (rs.Read() == true) 
      { 
       Login_Success(); 
      } 
      else 
      { 
       MessageBox.Show("Login Failed!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
       txtUsername.Clear(); 
       txtPassword.Clear(); 
       txtUsername.Focus(); 
      } 
      conn.Close(); 
+0

請不要將您的代碼作爲圖像發佈。使用Strg + K並將您的代碼複製到您的問題 –

+0

@RodKimble我編輯了該帖子。請再看一下。謝謝。 – Ajax

+0

您可以發佈從登錄表單訪問數據庫的代碼,因爲那是您的錯誤所在?它不能是我想的上面(否則你爲什麼以root身份連接)? –

回答

0

打開MySQL工作臺。轉到用戶和權限。將用戶的主機替換爲'%'。您正在使用root帳戶創建一個用戶。點擊底部的添加帳戶。填寫所需的信息。然後單擊選項卡模式特權。點擊添加條目並添加該用戶被允許執行和訪問的內容。使用您的應用程序的用戶/密碼。

無論如何,您可能想要限制主機,您應該閱讀一些關於mysql安全性的內容。花費它需要的時間。

此外,您不想通過將參數放入查詢來構建查詢。閱讀關於SQL注入攻擊。

相關問題