php访问远程数据库

时间:2008-11-11 20:45:30

标签: php mysql

帮助!

我在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)

nb: SOMESTRING 看起来可能与共享主机环境有关。

任何想法???

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

5 个答案:

答案 0 :(得分:4)

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

您可以修改cPanel的权限吗?您是否已做过任何允许从工作站访问的内容(ODBC)?

错误消息似乎表明您具有对mysql-server的网络访问权限,但不具有该特定主机的用户名权限。

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

GRANT SELECT ON数据库。* TO username@ip.address.of.host1通过'password'识别

可能适合你。我刚刚写了这篇文章,您可能想要仔细检查mysql-docs中的语法。

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分: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无法使用这些凭据登录。

答案 3 :(得分:0)

错误消息表示您可以联系mySql服务器,但您尝试登录的用户无法访问。

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

答案 4 :(得分:0)

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