3

我正在制作一个小型聊天程序。我想用 c# 从 mysql 数据库中获取数据。但我不断收到错误消息。

An unhandled exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.dll

Additional information: Unable to connect to any of the specified MySQL hosts.

我试过这个:

string MyConString = "SERVER=localhost;" +
                     "DATABASE=databse;" +
                     "UID=root;" +
                     "PASSWORD=passowrd";
MySqlConnection connection = new MySqlConnection(MyConString);

它奏效了。但是,当我尝试连接到本地主机上的数据库以外的 mysql 数据库时,我得到一个错误,并知道我可以尝试什么

谢谢

4

2 回答 2

0

尝试这个

//create a MySQL connection with a query string
MySqlConnection connection = new MySqlConnection("server=localhost;database=cs;uid=root;password=abcdaaa");

//open the connection
connection.Open();

//close the connection
connection.Close();
于 2013-07-18T12:19:02.070 回答
0

您应该检查是否允许远程连接到您的服务器。在这里你可以找到一些关于它的细节。

然后您应该检查您在连接字符串中使用的用户是否可以从本地主机外部访问。引用这个答案:

您尝试连接的用户是否允许从您的主机连接?有关这方面的更多信息,请参阅 http://dev.mysql.com/doc/refman/5.1/en/create-user.htmlhttp://dev.mysql.com/doc/refman/5.1/上的 MySQL 文档en/account-names.html,特别是帐户名称的语法是 'user_name'@'host_name'。如果您希望能够从任何计算机连接给定帐户,则帐户名称将遵循类似 'user_name'@'%' 的语法,其中 % 是与任何主机名匹配的通配符。

如果上述方法都不起作用,您应该最后检查是否没有防火墙规则阻止您访问数据库。这里有更多详细信息,但首先要尝试的是远程登录数据库服务器上的 3306 端口(即如果您的数据库使用默认端口)。

PS:我刚刚发现您正在使用 root 用户帐户连接到数据库。默认情况下,root 只能从 localhost ( source ) 登录:

在 Windows 上,创建的 root 帐户只允许来自本地主机的连接。可以通过指定主机名 localhost 或 IP 地址 127.0.0.1 进行连接。如果用户在安装过程中选择了从远程机器启用 root 访问选项,Windows 安装程序将创建另一个 root 帐户以允许来自任何主机的连接。

在 Unix 上,每个 root 帐户都允许来自本地主机的连接。可以通过指定主机名 localhost、IP 地址 127.0.0.1 或实际主机名或 IP 地址来建立连接。

因此,您可能应该从用户访问级别开始调查。如果 root 被限制为 localhost,最好保留它(出于安全原因),并创建一个新用户,以便从您的应用程序远程访问您的数据库(更多详细信息请点击此处)。

于 2013-07-18T12:29:26.843 回答