Privilege:权限
MySQL中的权限分为五个级别,分别为Global Level、Database Level、Table Level
Global Level
Global Level的权限控制又称为全局权限控制,所有权限信息都保存在mysql.user表中。Global Level的所有权限都是针对整个mysqld的,对所有的数据库下的所有表及所有字段都有效。
GRANT SELECT,UPDATE,DELETE,INSERT ON *.* TO 'def'@'localhost';
Global Level主要有如下这些权限(以下为5.0.3以上版本拥有权限):
Database Level
Database Level其作用域即为所指定整个数据库中的所有对象。
GRANT ALTER ON test.* TO 'def'@'localhost';
GRANT DROP ON * TO 'def'@'localhost';
Database Level主要少了以下几个权限:CREATE USER,FILE,PROCESS,RELOAD,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHUTDOWN,SUPER和USAGE这几个权限,没有增加任何权限。
Table Level
Table Level的权限作用范围是授权语句中所指定数据库的指定表。
GRANT INDEX ON test.t1 TO 'abc'@'%.jianzhaoyang.com';
Table Level的权限由于其作用域仅限于某个特定的表,所以权限种类也比较少,仅有
ALTER,CREATE,DELETE,DROP,INDEX,INSERT,SELECT UPDATE这八种权限。
Column Level
Column Level的权限作用范围就更小了,仅仅是某个表的指定的某个(或者某些)列。
GRANT SELECT(id,value) ON test.t2 TO 'abc'@'%.XXX';
Column Level级别的权限仅有INSERT,SELECT和UPDATE这三种。
Routine Level
Routine Level主要针对的对象是procedure和function这两种对象,在授予Routine Level权限的时候,需要指定数据库和相关对象
GRANT EXECUTE ON test.p1 to 'abc'@'localhost';
Routine Level的权限主要只有EXECUTE和ALTER ROUTINE两种