2017-09-14 140 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注入攻击。

相关问题