2011-03-28 146 views
2

我有一个数据库运行在我的桌面程序更新的服务器上。我的程序是用C#编写的,使用Mysql Connector可以很好地连接。无法连接到远程MySQL与PHP

private void Initialize() 
    { 
     server = "xxx.com"; 
     database = "test01"; 
     uid = "user"; 
     password = "pass"; 
     string connectionString; 
     connectionString = "SERVER=" + server + ";" + "DATABASE=" + 
     database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 

     connection = new MySqlConnection(connectionString); 
    } 

我希望能够从我与我的网站PHP脚本数据库中检索一些数据,但我不能让即使是简单的连接与我的数据库工作,用相同的连接信息。我不是很熟悉PHP,而且我希望,我只是做一个愚蠢的错误:)

$con = mysql_connect("xxx.com","user","pass"); 
if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

这只是不断死去......有人能告诉我,我在做一些愚蠢的事,并告诉我如何解决它?

由于提前, LordJesus

编辑: 我不断收到错误是这样的: 无法连接:失去与MySQL服务器在“读书初始通信数据包”,系统错误:110

编辑#2: 我的'用户'已被授予'%'的访问权限,该权限应覆盖所有IP。当我运行phpinfo();我收到了很多信息,其中包括一个名为mysql的部分,其中包含信息。

已解决...或未解决? 好的,我想我知道它为什么会失败。我的网站托管在one.com上,并与他们的支持者聊天,我了解到他们不允许连接到远程数据库,只有我的域名上的数据库。这不是我想要的。所以我没有解决它,但我发现为什么我得到了这个错误。现在我需要找到一种解决方法...

+1

任何特定的错误消息?你是否连接到正确的端口? – drudge 2011-03-28 20:59:18

+0

究竟发生了什么?你应该得到一些错误。 – 2011-03-28 21:20:09

+0

你的php配置是否正确..首先尝试打印phpinfo();然后检查是否可以看到MySql信息。如果没有MySql的结果,您需要先配置它。检查这个http://www.php.net/manual/en/mysql.installation.php – ace 2011-03-29 06:44:53

回答

2

这听起来像我的你的环境如下:你的桌面上有一个C#程序,你的MySQL服务器位于另一台机器上,最后是Web服务器,它是自治的并且不依附于这些系统中的任何一个。如果是这种情况,则需要从Web服务器向数据库授予权限。

以下将授予您的网络服务器的选择权限。

GRANT SELECT ON test01.* TO 'user'@'ip.of.the.webserver' IDENTIFIED BY 'pass'; 
+0

如果您的Web服务器具有有效的反向查找,MySQL可能会将其用于身份验证目的。您可能需要查看Web服务器的反向DNS,并使用它来代替GRANT语句的IP地址。 – 2011-03-28 21:22:03

+0

我只是试过这样做,但它没有解决它... @Sean C.如何获得我的Web服务器的反向DNS? – Daniel 2011-03-29 12:30:09

+0

如果您有权挖掘,可以尝试使用该工具。这是一个例子。如果我挖掘www.google.ca,我会得到五个IP。一个是74.125.226.146;所以我会以此为例。反向查找由指针记录(PTR)处理。 '挖PTR 146.226.125.74.in-addr.arpa'将试图找到该地址的关联PTR记录。 – 2011-03-29 12:45:38