当我尝试使用服务器的实际主机名连接到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 :(
我很感激你帮助理解为什么会这样。
答案 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 /主机的身份验证请求。
答案 3 :(得分:0)
我认为问题来自$actual_hostname
,可能包含错误,或来自$user
和$password
,这些问题可能与本地数据库中的问题不同。<登记/>
记录这些值,然后检查它们。
答案 4 :(得分:-1)
也许$ actual_hostname不是字符串..check ...正确..输出它。还有一个建议是将这些变量定义为CONSTANT。喜欢
define ("DB_SERVER","localhost");
define ("DB_USER","root");
define ("DB_PASS","password");