帮助!
我在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脚本尝试使用的完全相同。
答案 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端口。当然,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;