关于MySql skip_name_resolve参数的理解

 skip_name_resolve是mysql调优的一部分,作用是禁止域名解析,

什么时候开启这个参数呢?

   1. 通过在第一次建立链接时缓存IP和host name,的映射关系,同一主机的后续连接将直接查看host cache,而不用在和DNS解析

    2.cache中同样包含IP 和 登录错误的错误信息,可根据这些,对这些信息(IP)进行限制

那么 IP和host name关系是怎么建立起来的?

1.当有一个新的客户端连接进来的时候,mysql server会在Ip在host cache中建立一个新的记录,第一次建立连接的时候只有Ip

没有主机名,

2.mysql server 检测到HOST_VALIDATED 的值为false,它会试图进行DNS解析,如果解析成功,它将更新HOST值为主机名,

并且将HOST_VALIDATED 改为true,如果没有解析成功,判断失败的原因是永久的 还是临时的,如果是永久的,则HOST为NULL,并且将器改为true,如果是临时的,就是false 后面在链接 还是会再次进行DNS解析。

成功的标志:

    1.通过IP获取到主机名

    2.将解析之后的主机名 反向解析为IP 判断和IP是否相同,相同的话,才能判断为解析正确,才能更新cache中的信息。

那么host cache的优缺点是什么?

先说缺点:

    当有一个新的客户端进来之后,要建立一条新纪录,如果DNS解析很慢,会影响性能,如果被允许访问的主机过多,也会影响性能,这个和host_cache_size,这个参数是5.6.5引入的,之前默认是128 之后默认是-1,基于max_connections的值动态调整、所以如果被允许访问的主机很多,基于LRU算法,先前建立的链接可能会被挤掉,这些主机重新进来时,会再次进行DNS解析

优点:通常情况下,主机名是不变的,而IP是变化的,如果一个客户端的IP经常变化,那基于IP的授权,也能防止外界的暴力破解

关于阻止外界的暴力破解攻击,涉及到max_connect_errors参数,默认为100,官方的解释如下:

If more than this many successive connection requests from a host are interrupted without a successful connection, the server blocks that host from further connections.

如果要禁止DNS解析,可设置skip_name_resolve参数,这样,mysql.user表中基于主机名的授权将无法使用,且错误日志中会提示:

[Warning] 'user' entry 'root@mysql-slave1' ignored in --skip-name-resolve mode.

这里,通过mysql-slave1访问,将会拒绝访问

[root@mysql-slave1 ~]# mysql -h192.168.244.145 -uroot -p123
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'192.168.244.144' (using password: YES)



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孔明兴汉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值