标签: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,则用户登录的验证将会通过
标签:nbsp 连接 acl init 否则 sql数据库 影响 mysql 用户
原文地址:https://www.cnblogs.com/northhurricane/p/11816276.html