我有一个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}
我是如何通过网络访问服务器的?
答案 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地址返回错误。
祝你好运!