GRANT
更新时间:2021-03-26
GRANT
Description
GRANT 命令用于赋予指定用户或角色指定的权限。
授予数据库、表权限:
GRANT privilege_list
ON db_name[.tbl_name]
TO user_identity [ROLE role_name]
授予资源权限:
GRANT privilege_list
ON RESOURCE resource_name
TO user_identity [ROLE role_name]
-
privilege_list
需要赋予的权限列表,以逗号分隔。
当前 DORIS 支持如下权限:
ADMIN_PRIV
:除节点管理外的所有权限。GRANT_PRIV
:操作权限的权限。包括创建删除用户、角色,授权和撤权,设置密码等。SELECT_PRIV
:对指定的库或表的读取权限LOAD_PRIV
:对指定的库或表的导入权限ALTER_PRIV
:对指定的库或表的schema变更权限CREATE_PRIV
:对指定的库或表的创建权限DROP_PRIV
:对指定的库或表的删除权限USAGE_PRIV
:对指定资源的使用权限
另外还有两个语法糖权限可以用于快速授权:
-
ALL
类似读写权限。等同于授予:
SELECT_PRIV,LOAD_PRIV,ALTER_PRIV,CREATE_PRIV,DROP_PRIV
这些权限。
-
READ_ONLY
类似只读权限,等同于
SELECT_PRIV
。
权限分类:
- 库表权限:SELECT_PRIV,LOAD_PRIV,ALTER_PRIV,CREATE_PRIV,DROP_PRIV
- 资源权限:USAGE_PRIV
-
db_name[.tbl_name]
支持以下三种形式:*.*
:权限可以应用于所有库及其中所有表。db.*
:权限可以应用于指定库下的所有表。db.tbl
:权限可以应用于指定库下的指定表。
这里指定的库或表可以是不存在的库和表。
-
resource_name
支持以下两种形式:*
:权限应用于所有资源。resource
:权限应用于指定资源。
这里指定的资源可以是不存在的资源。
-
user_identity
这里的
user_identity
语法同CREATE USER
中的语法。且必须为使用 CREATE USER 创建过的user_identity
。user_identity
中的host
可以是域名,如果是域名的话,权限的生效时间可能会有1分钟左右的延迟。也可以将权限赋予指定的
ROLE
,如果指定的ROLE
不存在,则会自动创建。
Example
-
授予所有库和表的权限给用户
GRANT SELECT_PRIV ON *.* TO 'jack'@'%';
-
授予指定库表的权限给用户
GRANT SELECT_PRIV,ALTER_PRIV,LOAD_PRIV ON db1.tbl1 TO 'jack'@'192.8.%';
-
授予指定库表的权限给角色
GRANT LOAD_PRIV ON db1.* TO ROLE 'my_role';
-
授予所有资源的使用权限给用户
GRANT USAGE_PRIV ON RESOURCE * TO 'jack'@'%';
-
授予指定资源的使用权限给用户
GRANT USAGE_PRIV ON RESOURCE 'odbc_resource' TO 'jack'@'%';
-
授予指定资源的使用权限给角色
GRANT USAGE_PRIV ON RESOURCE 'odbc_resource' TO ROLE 'my_role';
Keywords
GRANT