首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止反向DNS查找与PDO-连接每个IP-入口?

问如何防止反向DNS查找与PDO-连接每个IP-入口?
EN

Stack Overflow用户
提问于 2015-09-05 13:32:49
回答 1查看 1.8K关注 0票数 3

我试图通过PDO连接到另一个数据库服务器(MySQL)每个IP地址.

代码语言:javascript
复制
$db = new PDO('mysql:host=IP-ADDRESS;dbname=AAA', 'USER', 'XXXXX');

我在这里伪造了IP地址和用户,这不是错误;)

但不管出于什么原因,PDO将进行一些疯狂的反向DNS查找,并最终连接到一个完全不同的服务器,该服务器具有另一个IP-adress和其他按A记录分配的域,从PDO反向dns查找将在这里找到。

PDO抛出特定的异常:

代码语言:javascript
复制
SQLSTATE[28000] [1045] Access denied for user 'USER'@'WWW.ANOTHER-SERVER.COM'

当通过mysql-客户端连接终端时,一切都如预期的那样工作。

  1. 如何避免PDO进行反向DNS查找?
  2. 我如何告诉PDO,它应该在参数中给出的每个IP地址连接?
  3. 怎么可能,这种反向DNS查找是如此错误?

在/etc/host中没有特定的条目,这可能是造成这种情况的根本原因。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-05 14:49:27

PHP/PDO机器:

PDO永远不会反向查找。它将进行前向查找,然后连接到该IP。

您应该能够看到,在PHP/PDO机器上运行

代码语言:javascript
复制
tcpdump -i ethsomething -n -s 1500 -xX port 3306

当PDO试图连接时,这里显示了哪个IP号?

MySQL机器:

MySQL永远不会知道您试图访问它的主机名是什么。服务器将看到传入的请求,在套接字上执行getpeername(),生成一个IP号。

在默认情况下,服务器将对该IP进行反向查找。你可以把它关掉

代码语言:javascript
复制
[mysqld]
skip-name-resolve

进入您的my.cnf文件并重新启动服务器。

当MySQL被配置为执行反向查找时,它将尝试这样做。如果失败,在服务器放弃之前,连接尝试等待DNS响应需要5到30秒。

如果反向查找成功,MySQL将使用解析的名称user@reverse_lookup_result进入mysql.user表及其朋友。

如果反向查找失败,或者已被跳过名称解析禁用,MySQL将进入mysql.user表和具有未解决名称的朋友,用户@1.2.3.4或类似的名称。

这就产生了有趣的后果:

  1. 当名称解析打开时,用户可能拥有不同的特权,这取决于反向查找的成功与否。
  2. 当跳过名称解析打开时,在mysql.user.host中不是ip号的条目是无用的.
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32413636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档