1、先从user表中的Host,User,Password这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。...即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv
如果为N,则到db表中检查此用户对应的具体数据库...,并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推
3、如果在任何一个过程中权限验证不通过,都会报错
查询缓存
mysql的缓存主要的作用是为了提升查询的效率...之所以删除掉,是因为要求SQL和参数都是一样,同时查询缓存系统会跟踪查询中涉及的每一个表,如果这些表发生变化,则该表相关的所有缓存数据均会失效,查询缓存的失效非常频繁, 如果在一个写多读少的环境中,缓存会频繁的新增和失效...后面的条件进行过滤,按照指定的字段的值(如果有and连接符会进行联合筛选)从临时中间表Temp2中筛选需要的数据,注意如果在此阶段找不到数据,会直接返回客户端,不会往下进行.这个过程会生成一个临时中间表