使用主机名与MySQL的PHP连接问题

使用主机名与MySQL的PHP连接问题,php,mysql,Php,Mysql,当我尝试使用服务器的实际主机名连接到MySql数据库时,我收到以下消息: mysql_connect():拒绝用户访问 中的“用户”@“ip-…-.internal”(使用密码:是) /第8行的home/[username]/sendtitles.php 即 $conn = mysql_connect("localhost",$user,$password); //WORKS! $conn = mysql_connect($actual_hostname ,$user,$password);

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

mysql_connect():拒绝用户访问 中的“用户”@“ip-…-.internal”(使用密码:是) /第8行的home/[username]/sendtitles.php

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

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

如果您能帮助我理解为什么会发生这种情况,我将不胜感激。

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

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

回顾:

您应该(几乎)始终使用“localhost”作为主机名

您的实际主机名可能指的是其他名称。例如您的网站正在某个(共享)服务器上托管。但当您的“实际主机名”为“www.website.com”时,此URL将通过其DNS重定向到您的Web服务器。但是很明显,这不是你网站的确切地址。那可能有点像“http://www.hosting.com/web/data/yourwebsite“


因此,要么您使用“localhost”,要么您应该使用您的网络主机提供给您的准确的直接URL。

我认为问题要么来自
$actual\u hostname
,它可能包含错误,要么来自
$user
$password
,它们可能与您的本地数据库不同。

记录这些值,并进行检查。

也许$actual\u主机名不是字符串。.检查。。。恰当地。。输出它。另一个建议是将此类变量定义为常量。像

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

您在哪里设置
$actual_hostname
,它的值是多少?更改此代码
$conn=mysql\u connect($actual\u hostname,$user,$password)到这个
var\u转储($actual\u hostname)//$conn=mysql\u connect($actual\u hostname、$user、$password)并告诉我们输出是什么?谢谢你的回答,这是正确的,但我接受了最旧的。有趣的是,这两种尝试都来自托管db的同一台机器,并且acl允许:username-localhost当我使用主机名时,用户被视为外部用户,而当我使用localhost时,我没有问题。