mysql_connect没有和正确的主机交谈

时间:2013-04-19 12:21:02

标签: php mysql

我有以下问题。我们将mysql-server移动到另一台机器上,因此ip发生了变化,但是syslog机器上的脚本不会与新服务器通信。 我把它剥离到下面的代码来模拟问题

我的剧本

$link = mysql_connect("mysql.domain.tld", "<user>", "<pass>");
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';

当我然后执行我的脚本时,它返回

me@syslog:~# php test.php
Could not connect: Access denied for user '<user>'@'10.254.237.42' (using password: YES)

但是当我做ping时

me@syslog:~# ping -c 1 mysql.domain.tld
PING mysql.domain.tld (10.254.235.31) 56(84) bytes of data.

它解析为完全不同的ip(但正确的ip)

所以我现在正在“等待 - 所以!!!”模式,因为我无法找出它为什么连接到错误的机器。所以我的问题是有一种方法可以让mysql_connect始终连接到php.ini中的固定ip / host或其他东西吗?

2 个答案:

答案 0 :(得分:1)

您尝试登录的用户没有从该主机连接的权限,在本例中为10.254.237.42。您需要将其添加为用户<user>的有效主机。

修改它并在mySQL机器上执行:

GRANT ALL PRIVILEGES ON *.* TO  ‘USERNAME’@‘IP’  IDENTIFIED  BY  ‘PASSWORD’;

也就是说,您可能不想为用户提供所有权限。将其限制为特定数据库上的SELECT,INSERT,UPDATE,DELETE等...

可能您可以省略IDENTIFIED BY部分。

完成此命令后,您需要在登录后运行FLUSH PRIVILEGES

答案 1 :(得分:1)

如果您看到此错误,则最常见的原因是您为<user>@localhost分配的权限已不再适用,您必须向<user>@10.254.237.42授予相同的权限。