一、 说明
本篇文章主要说一下MySQL数据中身份鉴别控制点中a测评项的相关知识点和理解。
二、 MySQL用户
2.1. 用户身份标识
MySQL数据库对于用户的标识和其它数据库有些不一样,不仅仅是用户名,而是username + host。
MySQL数据中user表的一部分字段如下:
这三个用户的用户名虽然都是root,但其实是三个不同的用户,其密码也是单独设置的。
查询当前登录账户,也可以看到用户的标识组成为username+host:
2.2. 登录匹配机制
既然用户的标示是两个字段的组合,匹配的时候也要这两个字段都匹配上了才行,这里我简单的说一说(根据官方文档)。
当客户端对MySQL发起连接后,MySQL会先对user表进行排序,然后从第一行开始,逐行与传入的host、username进行匹配,当匹配到了某一行之后,就不往下继续匹配了。(如果任何一行都无法匹配,则登录失败)
此时,再来对比传入的口令和存储的口令是否一致,如果口令一致,那么该行即为这次登陆后所使用的行(用户身份)。
如果不一致,则登录失败。
举个例子,如果用户表如下所示:
那么当验证时,会首先对其进行排序,排序如下:
注意,Host字段可以使用匹配符%,%则代表匹配任何Ip地址。另外,空字符串也代表匹配任何Ip地址。
而User字段不使用匹配符%,但是如果为