我有以下问题。我们将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或其他东西吗?
答案 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
授予相同的权限。