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改变)在下一次客户端连接时生效
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/317841.html