当用户试图连接MySQL服务器时,服务器基于用户的身份以及用户是否能提供正确的密码验证身份来确定接受或者拒绝连接。
即客户端用户会在连接请求中提供用户名、主机地址、用户密码,MySQL服务器接收到用户请求后,会使用user表中
的host、user和authentication_string这3个字段匹配客户端提供信息。
服务器只有在user表记录的Host和User字段匹配客户端主机名和用户名,并且提供正确的密码时才接受连接。
如果连接核实没有通过,服务器就完全拒绝访问;否则,服务器接受连接,然后进入阶段2等待用户请求。
一旦建立了连接,服务器就进入了访问控制的阶段2,也就是请求核实阶段。对此连接上进来的每个请求,
服务器检查该请求要执行什么操作、是否有足够的权限来执行它,这正是需要授权表中的权限列发挥作用的地方。
这些权限可以来自user、db、table_priv和column_priv表。
确认权限时,MySQL首先 检查user表,如果指定的权限没有在user表中被授予,那么MySQL就会继续 检查db表,
db表是下一安全层级,其中的权限限定于数据库层级,在该层级的SELECT权限允许用户查看指定数据库的所有表中的数据;
如果在该层级没有找到限定的权限,则MySQL继续 检查tables_priv表以及columns_priv表,如果所有权限表都检查完毕,
但还是没有找到允许的权限操作,MySQL将返回错误信息,用户请求的操作不能执行,操作失败