2008-11-11 129 views
2

帮助!php访问远程数据库

我对HOST1上的PHP(PHP 5.2.5)脚本尝试连接到MySql数据库HOST2。两台主机都位于通过CPanel控制的共享主机环境中。

HOST2设置为允许来自HOST1的远程数据库连接。

我使用的PHP连接是: - $ h2 = IPADDRESS; $ dbu = DBUSER; $ dbp = DBPASS;

$DBlink = mysql_connect($h2, $dbu, $dbp); 

这总是失败: -

Access denied for user '<dbusername>'@'***SOMESTRING***' (using password: YES) 

注:SOMESTRING看起来可能是一些做的共享主机环境。

任何想法???

顺便说一句:我可以使用OpenOffice通过ODBC和SQLyog从我的笔记本电脑远程连接到HOST2。 SQLyog和ODBC设置与PHP脚本试图使用的完全相同。

回答

4

somestring可能是您的网络服务器的反向查找。

你可以修改你的cPanel的权限吗?你有没有做过什么来允许你的工作站(ODBC)访问?

错误消息似乎表明您具有对mysql服务器的网络访问权限,但没有针对来自该特定主机的用户名的权限。

如果你被允许授予权限的数据库,调用:

GRANT SELECT ON数据库* TO [email protected] IDENTIFIED BY '密码'

可能会为工作您。我只是把它写出来,你可能想要在mysql-docs中重新检查语法。

+0

谢谢 - 正如您所指出的,SOMESTRING实际上是托管我的网站的实际Web服务器的反向查找。 所以我只是启用远程访问,而不是我的网站的IP地址....所有的作品。 谢谢! – GreybeardTheUnready 2008-11-11 21:24:16

1

只是一些想法:

  • HOST1不必HOST2远程访问(共享主机不允许)
  • MySQL账户没有从HOST1(在帐户创建时指定的IP地址或通配符)访问

编辑:

在回答您的意见,我的意思是HOST1不能获得对HOST2 MySQL的端口。当然,Web服务将起作用,因为80端口向公众开放。正如另一位用户指出,你正在得到一个回应,所以你正在达到它。我会尝试指定数据库,并仔细检查您运行的帐户创建命令。

对于第二件,我的意思是这样的:http://dev.mysql.com/doc/refman/5.0/en/adding-users.html

您可以指定用户名可以从连接主机什么。如果它未设置为HOST2的IP或通配符,则HOST2无法使用这些凭据登录。

+0

感谢您的想法 - HOST1可以肯定访问HOST2,其实我可以通过简单地建立两者之间的米老鼠Web服务解决问题 - 但是我更愿意理解为什么这不会工作:-) 我不不足以理解你的第二个想法。 – GreybeardTheUnready 2008-11-11 21:02:12

2
  • 您是否阅读过Causes of Access denied Errors上的MySQL文档?

  • 您是否联系了您的托管服务提供商的支持?他们应该有权访问数据库连接的故障排除。互联网上的人们无法访问。

  • 您是否需要指定数据库名称?您的帐户可能只能连接到特定数据库。 mysql_connect()函数不允许你指定数据库,但new mysqli()呢。我不确定这是否相关 - 它可能允许您连接,但当您尝试查询不在数据库中的表时,会出现错误。

  • 您确定您使用的密码正确吗?MySQL允许每个客户主机使用不同的密码。无可否认,这不是一种常见的配置,但它是可能的。您的托管服务提供商应该能够告诉您。

0

错误消息意味着您可以联系mySql服务器,但您尝试登录的用户无权访问。

用户根本没有访问权限,或者它有本地访问权限,但不是来自您要连接的主机。

0

您应该尝试使用主机名和端口,如$ h2 = IPADDRESS:3307;