2013-07-15 137 views
3

我在做一个小型的聊天程序。我想用c#从mysql数据库中获取数据。 但我不断收到错误。c#:连接到php 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 DATABSE
+1

错误信息说什么?远程数据库是否配置为远程访问?你的应用程序是否有权与互联网交谈? – Chris

+0

这是我得到的错误:MySql.Data.dll中发生类型为'MySql.Data.MySqlClient.MySqlException'的未处理的异常 其他信息:无法连接到任何指定的MySQL主机。 – user2578273

+0

服务器是否可从您的计算机访问?您是否尝试通过例如一个命令行MySQL客户端? – Chris

回答

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(); 
0

你应该检查远程连接被允许到您的服务器。 Here你可以找到一些关于这方面的细节。

然后,您应该检查您在连接字符串中使用的用户是否具有从localhost以外的访问权限。引用自this回答:

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

如果以上都不行,最后应该检查是否没有阻止访问数据库的防火墙规则。有关here的更多详细信息,但首先要尝试的是telnet数据库服务器上的3306端口(即如果您的数据库正在使用默认端口)。

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

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

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

所以你应该开始你的调查与用户的访问级别。如果root被限制在本地主机上,那么保留它就是个好主意(出于安全原因),并创建一个新的用户,通过它从应用程序远程访问数据库(更多详细信息,请参阅here)。