如何使用C#连接到远程MySQL服务器?

时间:2013-02-26 16:55:45

标签: c# mysql

我有一个C#应用程序可以访问另一台计算机上的MySQL服务器。我试图通过IP来做到这一点。这是我的连接字符串:

server = "192.168.10.221";
database = "restaurantdb";
uid = "root";
password = "";
string connectionString;
connectionString = "SERVER=" + server + "; PORT = 3306 ;" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
mycon = new MySqlConnection(connectionString);

现在的想法是,我会通过互联网连接到两台计算机的Wi-Fi连接。然后,我将通过在C#上编码的SQL字符串访问数据库。现在我也可以通过LAN网络连接它们,但我不知道如何。

我在我的代码

中收到此异常
{"Access denied for user 'root'@'Crave-PC.lan' (using password: NO)"}   System.Exception {MySql.Data.MySqlClient.MySqlException}

我是如何通过网络访问服务器的?

2 个答案:

答案 0 :(得分:6)

问题出在MySQL Server端,root用户没有连接remotelly的权限。 要给root用户permisions连接remotelly,只需在mysql命令行输入:

GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'rootPass';

只需更改当前root密码的'rootPass',如果root没有密码,MySQL就不会让你连接,所以你必须为它定义一个。

一方面注意:作为安全性最佳实践,您应该定义除root之外的其他用户以从客户端应用程序访问您的mysql数据库。

希望它有所帮助,

答案 1 :(得分:1)

此线程的一个补充:

在两台计算机连接到同一网络的某些情况下,尽管配置了源计算机并且从客户端计算机授予用户权限,但上面定义的连接字符串可能仍然无效。

在这种情况下,请考虑(在进一步采取行动并在源计算机上采取更严肃的行动,例如修改Mysql配置文件等)“将计算机名称用作服务器名称而不是IP地址”。

即。

  • 首先,如上所述,向用户授予权限,
  • 但 而不是上面提出的连接字符串,请尝试以下操作 连接字符串:

所以,连接字符串看起来像:

server = "pc-name-whateveritis";
database = "restaurantdb";
uid = "root";
password = "";
string connectionString;
connectionString = "SERVER=" + server + "; PORT = 3306 ;" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
mycon = new MySqlConnection(connectionString);

源计算机的名称可能在许多情况下工作,源计算机的IP地址返回错误。

祝你好运!