使用hostname到MySQL的PHP​​连接问题

时间:2011-07-17 18:04:51

标签: php mysql

当我尝试使用服务器的实际主机名连接到MySql数据库时,我收到以下消息:

  

mysql_connect():拒绝用户访问   'user'@'ip -...-。internal'(使用密码:YES)in   第8行/home/[username]/sendtitles.php

即,

$conn = mysql_connect("localhost",$user,$password); //WORKS!

$conn = mysql_connect($actual_hostname ,$user,$password); //Doesn't work :(

我很感激你帮助理解为什么会这样。

5 个答案:

答案 0 :(得分:7)

您的MySQL用户只能从localhost连接。要更改此设置,请查看GRANT命令。另外,我建议使用专用的数据库用户而不是root用户。

答案 1 :(得分:1)

你应该(几乎)总是使用“localhost”作为你的主机名。

您的实际主机名可能指的是其他内容。例如......您的网站托管在某个(共享)服务器上。但是当您的“实际主机名”为“www.website.com”时,此URL将通过其DNS重定向到您的网络服务器。但显然,这不是您的网站托管的确切地址。这可能类似于“http://www.hosting.com/web/data/yourwebsite”。

因此,要么使用“localhost”,要么使用webhost为您提供的确切直接URL。

答案 2 :(得分:0)

您的root用户设置了ACL,以允许来自特定IP /主机的身份验证请求。

评论:http://dev.mysql.com/doc/refman/5.1/en/adding-users.html

答案 3 :(得分:0)

我认为问题来自$actual_hostname,可能包含错误,或来自$user$password,这些问题可能与本地数据库中的问题不同。<登记/> 记录这些值,然后检查它们。

答案 4 :(得分:-1)

也许$ actual_hostname不是字符串..check ...正确..输出它。还有一个建议是将这些变量定义为CONSTANT。喜欢

define ("DB_SERVER","localhost");
define ("DB_USER","root");
define ("DB_PASS","password");