码迷,mamicode.com
首页 > 其他好文 > 详细

skip_name_resolve对登录影响的源码分析

时间:2019-11-07 23:28:19      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:nbsp   连接   acl   init   否则   sql数据库   影响   mysql   用户   

skip_name_resolve对登录的影响
版本:mysql5.7.18
情况介绍:
通过--initialize-insecure初始化MySQL数据库,root密码为空,skip_name_resolve默认为OFF。
当设置skip_name_resolve为ON的时候,通过密码方式登录MySQL报告如下错误
ERROR 1045 (28000): Access denied for user ‘root‘@‘127.0.0.1‘ (using password: NO)
修改kip_name_resolve为OFF后,可以连接
user表中root的host为localhost

源码分析
在check_connection函数中,如果skip_name_resolve为OFF则,该分支为true,否则该分支为false
if (!(specialflag & SPECIAL_NO_RESOLVE))
{
为true是获取tcp连接的主机名,否则将不会获取
在默认情况下,thd->m_main_security_ctx.host().str的值被设置为localhost
在if (acl_check_host(thd->m_main_security_ctx.host().str, main_sctx_ip.str))中
会对host和ip进行判断,是否符合user表中的主机匹配要求

根据上面逻辑,可以看出,如果user表中的host修改为127.0.0.1,则用户登录的验证将会通过

 

skip_name_resolve对登录影响的源码分析

标签:nbsp   连接   acl   init   否则   sql数据库   影响   mysql   用户   

原文地址:https://www.cnblogs.com/northhurricane/p/11816276.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!