1.语法
授予权限:
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] {tbl_name | * | *.* | db_name.*}
TO user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ...
[REQUIRE
NONE |
[{SSL| X509}]
[CIPHER 'cipher' [AND]]
[ISSUER 'issuer' [AND]]
[SUBJECT 'subject']]
[WITH with_option [with_option] ...]
撤销权限:
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] {tbl_name | * | *.* | db_name.*}
FROM user [, user] ...
1)priv_type
priv_type | 权限说明 |
ALL [PRIVILEGES] | 设置除GRANT OPTION之外的所有简单权限 |
ALTER | 更改 |
ALTER ROUTINE | 更改或取消已存储的子程序 |
CREATE | 创建 |
CREATE ROUTINE | 创建已存储的子程序 |
CREATE TEMPORARY TABLES | 允许使用CREATE TEMPORARY TABLE |
CREATE USER | 允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES |
CREATE VIEW | 创建视图 |
DELETE | 删除数据 |
DROP | 删除 |
EXECUTE | 允许用户运行已存储的子程序 |
FILE | 允许使用SELECT...INTO OUTFILE和LOAD DATA INFILE |
INDEX | 允许使用CREATE INDEX和DROP INDEX |
INSERT | 插入数据 |
LOCK TABLES | 允许对您拥有SELECT权限的表使用LOCK TABLES |
PROCESS | 允许使用SHOW FULL PROCESSLIST |
REFERENCES | 未被实施 |
RELOAD | 允许使用FLUSH |
REPLICATION CLIENT | 允许用户询问从属服务器或主服务器的地址 |
REPLICATION SLAVE | 用于复制型从属服务器(从主服务器中读取二进制日志事件 |
SELECT | 查询 |
SHOW DATABASES | SHOW DATABASES显示所有数据库 |
SHOW VIEW | 显示视图 |
SHUTDOWN | 允许使用mysqladmin shutdown |
SUPER | 允许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections |
UPDATE | 更新数据 |
USAGE | “无权限”的同义词 |
GRANT OPTION | 允许授予权限 |
2)object_type
object_type | 含义 |
Table | 表 |
Funcation | 函数 |
Procedure | 存储过程 |
3)with_option
with_option | 含义 |
MAX_QUERIES_PER_HOUR count | 任一小时内用户可以执行的查询数目 |
MAX_UPDATES_PER_HOUR count | 任一小时内用户可以执行的更新数目 |
MAX_CONNECTIONS_PER_HOUR count | 任一小时内用户可以登录的数目 |
MAX_USER_CONNECTIONS count | 用户可以同时连接的最大数目 |
2.授权层级
1)全局层级
全局权限适用于一个给定服务器中的所有vc(数据库)。这些权限存储在gbase.user表中。GRANT ALL ON *.*.*(*.*)和REVOKE ALL ON *.*.*(*.*)只授予和撤销全局权限。
2)vc层级
vc权限使用于 一个给定vc中的所有数据库。这些权限存储在gbase.vcs_priv表中。
GRANT ALL ON vc.*.*和REVOKE ALL ON vc.*.*只授予和撤销全局权限。
3)数据库层级
数据库权限适用于一个给定数据库中的所有目标。这些权限存储在gbase.db表中。GRANT ALL ON vc.db.*和REVOKE ALL ON vc.db.*只授予和撤销数据库权限。
4)表层级
表权限适用于一个给定表中的所有列。这些权限存储在gbase.talbes_priv表中。GRANT ALL ON vc.db.tbl和REVOKE ALL ON vc.db.tbl只授予和撤销表权限。
5)列层级
列权限适用于一个给定表中的单一列。这些权限存储在gbase.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。
6)子程序层级
CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在gbase.procs_priv表中。GRANT ALL ON Funcation/Procedure vc.db.func/vc.db.proc和REVOKE ALL ON Funcation/Procedure vc.db.func/vc.db.proc只授予和撤销子程序权限。
3.权限生效时机
1)表和列权限在客户端的下一次请求时生效。
2)数据库权限改变在下一个USE db_name命令生效。
3)全局权限的改变(密码改变/默认vc改变)在下一次客户端连接时生效