如何使用c#连接到远程MySQL服务器
本文关键字:MySQL 服务器 何使用 连接 | 更新日期: 2023-09-27 18:01:18
我有一个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字符串访问数据库。现在我也可以通过局域网连接它们,但我不知道怎么连接。
我在我的代码中得到这个异常
{"Access denied for user 'root'@'Crave-PC.lan' (using password: NO)"} System.Exception {MySql.Data.MySqlClient.MySqlException}
你知道我如何通过网络访问服务器吗?
问题是在MySQL服务器端,root用户没有远程连接的权限。要赋予root用户远程连接的权限,只需在mysql命令行中输入以下命令:
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'rootPass';
只需将'rootPass'更改为您当前的root密码,如果root没有密码,MySQL将不允许您连接,因此您必须为它定义一个。
旁注:作为一个安全的最佳实践,你应该定义一个不同的用户而不是root从客户端应用程序访问mysql数据库。
希望有帮助,
这个线程的一个补充:
在某些情况下,两台计算机连接到同一网络,尽管源计算机配置并从客户端计算机授予用户特权,上述定义的连接字符串仍然可能无法工作。
在这种情况下,请考虑(在进一步对源计算机采取更严重的行动之前,例如修改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地址返回错误。
祝你好运!
将root更改为不同的用户名并设置密码对于远程访问效果很好,因为root只有在本地主机上才具有完全访问权限。在局域网中使用IP地址会出现错误,所以使用计算机名