我有以下问题。我们将 mysql 服务器移至另一台机器,因此 IP 发生了变化,但不知何故,系统日志机器上的脚本不会与新服务器通信。 我将其精简为以下代码来模拟问题
我的脚本
$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/主机?
最佳答案
您尝试登录的用户没有从该主机连接的权限,在本例中为 10.254.237.42
。您需要将其添加为用户 <user>
的有效主机.
修改此并在 mySQL 机器上执行:
GRANT ALL PRIVILEGES ON *.* TO ‘USERNAME’@‘IP’ IDENTIFIED BY ‘PASSWORD’;
也就是说,您可能不想授予用户所有权限。将其限制为特定数据库上的 SELECT、INSERT、UPDATE、DELETE 等...
您可能可以省略 IDENTIFIED BY
部分。
完成此命令后,您需要运行 FLUSH PRIVILEGES
登录时。
关于php - mysql_connect 未与正确的主机通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16104492/