如何使用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}

你知道我如何通过网络访问服务器吗?

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

问题是在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地址会出现错误,所以使用计算机名