GRANT语法用于给授予指定权限,例如表的读写权限、数据库的所有权限等。
适用引擎
GRANT语法适用于宽表引擎和时序引擎。无版本限制。
语法
grant_permission_statement ::= GRANT privilege_definition ON resource_definition TO user_identifier
privilege_definition ::= ALL | READ | WRITE | ADMIN | TRASH | SYSTEM
resource_definition ::= GLOBAL | DATABASE identifier | SCHEMA identifier | TABLE identifier
使用说明
GRANT语句是否可以执行成功,还取决于执行者自身拥有的权限。详细请参见用户及权限管理。
权限(privilege_definition)
共以下几种权限:
权限 | 说明 |
ALL或ALL PRIVILEGE | 为用户授予所有权限,包括下述四种权限。 |
READ | 为用户授予“读”权限。 |
WRITE | 为用户授予“写”权限。 |
ADMIN | 为用户授予“管理员”权限。 重要 ADMIN权限与READ、WRITE权限是独立的,授予了某个Database的ADMIN权限并不意味着就能够读写该Database下所有的表,需单独添加表的读写权限。 |
TRASH | 为用户授予“删除”权限。 |
SYSTEM | 为用户授予集群层面的管理权限。包含GLOBAL ADMIN权限。 重要 不支持授予DATABASE粒度的SYSTEM权限。 |
权限范围(resource_definition)
可授予权限的资源范围下:
GLOBAL:授予全局所有资源的特定权限。
重要建议不要轻易赋予GLOBAL权限,特别是GLOBAL ALL PRIVILEGES。
DATABASE:授予指定Database的某个权限。作用等同于SCHEMA。
说明宽表引擎2.5.3.3及以上版本支持
DATABASE
关键字。2.5.3.3之前版本仅支持SCHEMA
关键字。TABLE:授予指定表的某个权限。
权限资源范围的优先级:GLOBAL > DATABASE(SCHEMA)> TABLE。即如果拥有了GLOBAL的READ权限,则能读取任意Database中的表。
在使用DATABASE、SCHEMA或TABLE关键字时,需添加对应级别的对象名称(identifier)。例如
DATABASE default
、SCHEMA default
、TABLE test
分别表示数据库default和表test。
授权对象(user_identifier)
user_identifier为需要授权的用户名。
示例
授予全部权限
为用户user1授予数据库db1的全部权限。
GRANT ALL ON DATABASE db1 TO user1;
-- 或者
GRANT ALL ON SCHEMA db1 TO user1;
授予指定权限
为用户user2授予数据库db2中的表table2的管理员权限。
GRANT ADMIN ON TABLE db2.table2 TO user2;
为用户user3授予当前数据库中表table3的写权限。
GRANT WRITE ON TABLE table3 TO user3;
为用户user4授予全局读权限。
GRANT READ ON GLOBAL TO user4;
- 本页导读 (1)