1. 查看数据库中所有的表。和用户权限相关的是Mysql库中的user,db , table_priv , columns_priv ,四个表
select * from INFORMATION_SCHEMA.TABLES
2. 分别查看四个表的内容
User表
:存放用户账户信息以及全局级别(所有数据库)权限,决定了来自哪些主机的哪些用户可以访问数据库实例,如果有全局权限则意味着对所有数据库都有此权限
Db表:存放数据库级别
的权限,决定了来自哪些主机的哪些用户可以访问此数据库
Tables_priv表:存放表级别的权限
,决定了来自哪些主机的哪些用户可以访问数据库的这个表
Columns_priv表:存放列级别的权限
,决定了来自哪些主机的哪些用户可以访问数据库表的这个字段
Procs_priv表:存放存储过程和函数
级别的权限
3.Mysql 权限验证过程
- 先从user表中的Host,User,Password这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。
- 通过身份认证后,进行权限分配,按照user,db,tables_priv,columns_priv的顺序进行验证。
- 即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv;
- 如果user中为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;
- 如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限。