mysql中存在4个控制权限的表,分别为
1. mysql.USER表
2. mysql.DB表
3. mysql.TABLES_PRIV表
4. mysql.COLUMNS_PRIV表
要注意的是,Mysql中有一个数据库”information_schema
“,似乎里面保存的也是一些权限信息,但是要明白的是,这个数据库”information_schema
“是为系统管理员提供元数据的一个简便方式,它实际上是一个视图,可以理解为对Mysql中的一个信息的封装,对于Mysql主程序来说,身份认证和授权的信息的来源只有一个,就是”mysql
“。
在我们进行数据库连接、登录的时候,mysql权限表的验证过程为:
1. 先从user表中的:
1) Host
2) User
3) Password
这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。
2. 通过身份认证后,进行权限分配,按照下面的顺序进行验证。
1) user
2) db
3) tables_priv
4) columns_priv
即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再
检查db,tables_priv,columns_priv
如果全局权限表user
对应