GRANT
用户授权的语法介绍。
语法
用户授权的语义表达是“将某个对象的指定权限赋予给指定用户”。其语法如下:
grant_statement ::= GRANT privilege_definition ON resource_definition TO user_name
privilege_definition ::= ALL [PRIVILEGES] | READ | WRITE | ADMIN | SYSTEM
resource_definition ::= GLOBAL | DATABASE database_name
参数说明
参数 | 说明 |
---|---|
user_name | 权限被授予的用户名。必须是SQL标识符。 |
privilege_definition | 被授予的权限。取值为以下类型:
|
resource_definition | 被授权的资源范围。资源粒度如下:
|
database_name | 当授权的资源范围为Database时,表示具体的授权Database名。必须是SQL标识符。 |
权限的授权范围优先级:GLOBAL > DATABASE。
即如果拥有了GLOBAL的READ权限,则能查询任意Database中的时序表;但如果只是拥有特定Database的READ权限,则只能查询该Database下的时序表。建议不要轻易赋予 GLOBAL权限,特别是GLOBAL ALL PRIVILEGES。
ADMIN权限与READ、WRITE权限是独立权限,授予了某个Database的ADMIN权限并不意味着就能够读写该Database下的时序表。
不支持授予DATABASE粒度的SYSTEM权限。
不支持授予一个不存在的资源对象的权限;同样,也不支持向一个不存在的用户授权。查看已有资源的方法可参见 SHOW 语句。
GRANT语句是否可以执行成功,还取决于执行者自身拥有的权限。详细请参见用户及权限管理。
示例
以下例子展示了给一个名为 tsdbuser
的用户赋予名为 DB1
的Database的读权限。
GRANT READ ON DATABASE `DB1` TO `tsdbuser`;
以下例子展示了给一个名为 tsdbuser
的用户赋予名为 DB2
的Database的写权限。
GRANT WRITE ON DATABASE `DB2` TO `tsdbuser`;
以下例子展示了给一个名为 tsdbuser
的用户赋予名为 DB3
的Database的全部权限。
GRANT ALL PRIVILEGES ON DATABASE `DB3` TO `tsdbuser`;