Mysql CLI在localhost上可以正常连接,但是mysqli_connect将localhost解析为计算机名称

时间:2019-03-22 17:25:50

标签: mysql mysqli

我使用mysqli_connect()进行了一个看似直接的调用,由于主机名替换为“ localhost”而失败了。

示例:

$username = 'foo';
$host = 'localhost';
$passwd = 'secret';

$link = mysqli_connect($host,$username, $passwd)...

使用“ localhost”或“ 127.0.0.1”作为主机调用mysqli_connect会返回以下内容:     (HY000 / 1045):用户'foo'@'servername.mydomain.com'的访问被拒绝

我可以使用相同的帐户连接本地安装的mysql客户端,所以用户的权限是有效的:

SHOW GRANTS FOR 'foo'@'localhost';
GRANT USAGE ON *.* TO 'foo'@'localhost'

很明显,mysqli_connect尝试使用本地计算机的DNS名称而不是localhost进行连接。

我知道我可以选择向主机授予明确定义为计算机名称的主机的许可,或者允许所有主机允许,但是在这种情况下,这些选项都不可接受。我需要它才能使其在localhost上正常工作。

相关: / etc / hosts定义localhost如下:     127.0.0.1本地主机

感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

将套接字路径作为mysqli_connect()的最后一个参数传递可能一直有效。随后对远程数据库的调用也失败,并出现相同的错误,直到现在我才注意到该错误发生在以后的行号上。