我们之前用 php 编写的一个 Web 应用程序曾出现过 DNS 问题,因此我们使用 IP 地址代替服务器名称,并使用 HOST 文件,并决定执行崩溃测试
当我们的 DNS 服务器正常工作时,我们的 Web 应用程序可以正常工作。但是,当我们关闭 DNS 服务器时,代码会在以下行停止工作
$bdd = new PDO('mysql:host=139.XXX.XXX.XXX', 'username', 'pwd',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
看来我们没有收到来自 mysql 数据库服务器的答复。页面加载大约 20 分钟后才出现错误。
远程服务器是否使用反向 DNS 查找进行回复?所以我们没有答案?
感谢您的帮助 !!!
问候,
法比安
答案1
是的,它会进行反向查找以找到匹配的用户/主机。https://dev.mysql.com/doc/refman/8.0/en/host-cache.html
罪魁祸首就在这句话中:“对于每个适用的新客户端连接,服务器使用客户端 IP 地址来检查客户端主机名是否在主机缓存中。如果是,则服务器拒绝或继续处理连接请求,具体取决于主机是否被阻止。如果主机不在缓存中,则服务器尝试解析主机名。”
查看https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_skip_name_resolve
答案2
听起来你必须编辑 my.cnf 中的绑定地址?
检查这是否有帮助: 如何将 MySQL 服务器绑定到多个 IP 地址?