MySQL用户登录过程验证详解

MySQL用户登陆验证过程:
1、MySQL server将user表读入到内存中,然后排序,排序原则下面会讲
2、客户端尝试连接MySQL服务器,服务器扫描内存中排序过后的user表的条目
3、MySQL服务器采纳第一行匹配的客户端名和用户名,然后验证通过

MySQL服务器内存中user表排序原则:
1、最具象(most-specific)的条目放在最前面。
2、user表的host列,文本主机名(Literal host names)和IP地址是最具象的。子网掩码的方式,如192.168.1.0/255.255.255.0的具象程度等同于192.168.1.13,都是最具象的;子网掩码192.168.1.0/255.255.255.0的具象程度高于192.168.1.%。’%’是最不具象的,优先级排在后面;空字符串”意思是any host,具象级别排在’%’之后。
3、host值相同,最具象的值排在最前面;user值为空,以为着any user,是最不具象的。

总结:
1、user表中的host和user列按照具象程度排序加载到内存中,最具象的排在最前面。

2、host具象程度相同时,再去按照user的具象程度从高到底匹配;若没有匹配上,那么转移到次具象的host继续匹配,直至匹配上为止;若没有匹配上,那么登录验证宣告失败。


案例:
测试环境中,三台主机组成Master slave集群,gp-s2是master,gp-s1和gp-s3是slave,并且这三台服务器都在同一个网段。

gp-s2 Master上的user表如下,rep1用户允许 10.9.15.% 这个网段都访问gp-s2。

发表评论

电子邮件地址不会被公开。 必填项已用*标注