一、基本介绍
MySQL 的权限系统主要存储在几个被称为 grant tables 的系统表中,即:mysql.User,mysql.db,mysql.Host,mysql.table_priv 和 mysql.column_priv。
由于权限信息数据量比较小,而且访问又非常频繁,所以 Mysql 在启 动的时候,就会将所有的权限信息都 Load 到内存中保存在几个特定的结构中。所以才有我 们每次手工修改了权限相关的表之后,都需要执行“FLUSH PRIVILEGES ” 命令重新加载 MySQL 的权限信息。
如果我们通过 GRANT , REVOKE 或者 DROP USER 命令来修改相关权限,则 不需要手工执行 FLUSH PRIVILEGES 命令,因为通过 GRANT,REVOKE 或者 DROP USER 命令所 做的权限修改在修改系统表的同时也会更新内存结构中的权限信息。
二、权限级别
MySQL 中的权限分为五个级别
- Global Level
Global Level 的权限控制又称为全局权限控制,所有权限信息都保存在 mysql.user 表 中,如果一个权限是以 Global Level 来授予的,则会覆盖其他所有级别的相同权 限设置,Global Level 主要有如下这些权限 (以下为5.0.3以上版本拥有权限),授权主要使用*.*命令,如: GRANT SELECT,UPDATE,DELETE,INSERT ON *.* TO 'test'@'localhost';
权限
|
权限级别 |
权限说明 |
CREATE |
数据库、表或索引 |
创建数据库、表或索引权限 |
DROP |
数据库或表 |
删除数据库或表权限 |
GRANT OPTION |
数据库、表或保存的程序 |
赋予权限选项 |
REFERENCES </ |