PHP MYSQL尝试在多个主机名下连接

时间:2013-09-30 17:19:14

标签: php mysql

我尝试在网上寻找这个,但我很难找到我正在寻找的东西。

在我工作的地方,我们有一台服务器上有多个apache设置,所有服务器都由不同的子域访问,总共约5个(例如:abc.domain.com,xyz.domain.com,def.domain.com)。 / p>

问题是在我们需要连接的不同物理服务器上有一个mysql服务器,它只允许来自特定主机的连接(例如abc.domain.com)。每当我们尝试从PHP连接到它时,有时登录将失败,因为尝试登录的用户将出现在不同的主机名上。 (ex用户是root@xyz.domain.com,当root@abc.domain.com是唯一允许的用户时)。如果页面刷新了几次,它最终会使用正确的主机名登录并正常工作。

我的问题是,是本地服务器上的PHP,还是远程服务器上的MYSQL,它决定了用户登录的主机名。

我知道最简单的解决方案是将其他子域添加到接受主机的mysql服务器列表中,但是我可以控制PHP服务器,而MYSQL服务器是一个不同的部门,它会更容易来在PHP方面提供解决方案。

由于

1 个答案:

答案 0 :(得分:0)

见这里:How does mysql determine the hostname of its clients?。 MySQL服务器执行客户端IP的反向DNS查找。如果您有多个反向条目,则可能无法预测将使用哪个条目,这就是您看到不一致结果的原因。

您应该删除额外的反向DNS条目(通常不需要它们),或使用客户端IP而不是主机名配置您的权限。