MySQL 中的 skip-name-resolve 问题 [ 新手入门 ]
MySQL 连接很慢,登陆到服务器上查看服务器日志都是正常的,无可疑记录,登陆到 MySQL 服务器上,查看下进程,发现有很多这样的连接:
218 | unauthenticated user | 192.168.10.6:44500 | NULL | Connect | NULL | login | NULL
219 | unauthenticated user | 192.168.10.6:44501 | NULL | Connect | NULL | login | NULL
........
原因是由于 MySQL 对连接的客户端进行DNS反向解析。
有2种解决办法:
- 把 client 的 ip 写在 MySQL 服务器的
/etc/hosts
文件里,随便给个名字就可以了。 - 在 my.cnf 中加入
–skip-name-resolve
。
对于第一种方法比较笨,也不实用,那么 skip-name-resolve
选项可以禁用 dns 解析,但是,这样不能在 MySQL 的授权表中使用主机名了,只能使用 IP。
我理解 MySQL 是这样来处理客户端解析过程的,
- 当 MySQL 的 client 连过来的时候,服务器会主动去查 client 的域名。
- 首先查找
/etc/hosts
文件,搜索域名和IP的对应关系。 - 如果 hosts 文件没有,则查找 DNS 设置,如果没有设置 DNS 服务器,会立刻返回失败,就相当于 MySQL 设置了
skip-name-resolve
参数,如果设置了 DNS 服务器,就进行反向解析,直到 timeout。
PHP学院的中学生
注册时间:2018-10-23
最后登录:2024-09-23
在线时长:168小时13分
最后登录:2024-09-23
在线时长:168小时13分
- 粉丝29
- 金钱4725
- 威望30
- 积分6705