Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql\u connect未与正确的主机通信_Php_Mysql - Fatal编程技术网

Php mysql\u connect未与正确的主机通信

Php mysql\u connect未与正确的主机通信,php,mysql,Php,Mysql,我有以下问题。我们将mysql服务器移到了另一台机器上,因此ip发生了变化,但syslog机器上的脚本无法与新服务器通信。 我将其简化为以下代码来模拟这个问题 我的剧本 $link=mysql\u connect(“mysql.domain.tld”,“”,“”); 如果(!$link){ die('无法连接:'.mysql_error()); } echo“连接成功”; 然后,当我执行脚本时,它返回 me@syslog:~# php test.php Could not connect: A

我有以下问题。我们将mysql服务器移到了另一台机器上,因此ip发生了变化,但syslog机器上的脚本无法与新服务器通信。 我将其简化为以下代码来模拟这个问题

我的剧本

$link=mysql\u connect(“mysql.domain.tld”,“”,“”);
如果(!$link){
die('无法连接:'.mysql_error());
}
echo“连接成功”;
然后,当我执行脚本时,它返回

me@syslog:~# php test.php
Could not connect: Access denied for user '<user>'@'10.254.237.42' (using password: YES)
它解析为完全不同的ip(但正确的ip)


因此,我目前处于“wait WHUT!!!”模式,因为我无法找出它连接到错误机器的原因。所以我的问题是,有没有一种方法可以让mysql_connect始终连接到php.ini或其他文件中的固定ip/主机?

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

修改此选项并在mySQL计算机上执行:

GRANT ALL PRIVILEGES ON *.* TO  ‘USERNAME’@‘IP’  IDENTIFIED  BY  ‘PASSWORD’;
也就是说,您可能不想给用户所有特权。限制它在特定数据库上选择、插入、更新、删除等

可能您可以省略由部分标识的


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

如果您看到此错误,最常见的原因是您已为
@localhost
分配了不再为真的权限,并且您必须将相同的权限授予
@10.254.237.42
,因此,为什么不使用IP而不是别名?将服务器移动到不同的主机,每个提供商都需要时间来分配新的DNS。它需要DNS刷新。用户的访问被拒绝,问题在于权限。@Royal Bg simple DNS名称不会更改,ip也可以更改(但在这种情况下会给出相同的结果)@Harpreet我认为与其说是权限问题,不如说是联系了错误的服务器。.可能不是权限问题,因为在旧主机上,可能没有相同的用户,当它从那里移动时,有人没有正确设置权限(我发誓不是我:))用这个解决了它,总是其他人:D
GRANT ALL PRIVILEGES ON *.* TO  ‘USERNAME’@‘IP’  IDENTIFIED  BY  ‘PASSWORD’;