0

我有以下问题。我们将 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)

所以我目前处于“等待 - WHUT !!!” 模式,因为我不知道为什么它连接到错误的机器。所以我的问题是有没有办法让 mysql_connect 始终连接到 php.ini 或其他东西中的固定 IP/主机?

4

2 回答 2

1

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

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

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

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

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

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

于 2013-04-19T12:24:05.570 回答
1

如果您看到此错误,最常见的原因是您分配了<user>@localhost不再正确的权限,并且您必须将相同的权限授予<user>@10.254.237.42.

于 2013-04-19T12:24:23.617 回答