我使用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本地主机
感谢您的帮助。谢谢。
答案 0 :(得分:0)
将套接字路径作为mysqli_connect()的最后一个参数传递可能一直有效。随后对远程数据库的调用也失败,并出现相同的错误,直到现在我才注意到该错误发生在以后的行号上。