GRANT
描述
该语句用于给指定的用户或角色授予相应的权限,或者将角色授予用户或角色。
使用限制及注意事项
不支持循环 GRANT 操作。例如,角色 A 授予角色 B,角色 B 授予角色 C,则角色 C 授予角色 A 会报错。
权限要求
将对象权限授予用户权限要求
-
执行
GRANT语句时,当前用户必须拥有被授予的权限。例如,想要使用用户user1为用户user2授予表tbl1的SELECT权限,则用户user1必须拥有表tbl1的SELECT权限。 -
执行
GRANT语句时,当前用户需拥有GRANT OPTION权限。有关 seekdb 权限的详细介绍,参见 seekdb 的权限分类。
信息
为用户授权后,该用户需重新连接 seekdb ,权限才能生效。
将角色授予用户或角色权限要求
- 当前用户具备
SUPER权限时,可以GRANT所有角色。 - 将角色授予其他用户或角色时,当前用户必须拥有被授予的角色,并且拥有
ADMIN OPTION权限,才能授权成功。查看当前用户所拥有的权限的相关操作请参见 查看用户权限。
语法
将对象权限授予用户或角色
GRANT priv_type[(column_name_list)] [, priv_type[(column_name_list)] ...]
ON [object_type] priv_level
TO {user [, user...]}
[WITH GRANT OPTION];
column_name_list:
column_name [, column_name ...]
object_type:
TABLE
| FUNCTION
| PROCEDURE
| CATALOG
user:
user_or_role
| user_name IDENTIFIED [WITH auth_plugin] BY password
| user_name IDENTIFIED [WITH auth_plugin] BY PASSWORD password
user_or_role:
user_name | role_name
将角色授予用户或角色
GRANT role_name [, role_name ...]
TO user_or_role [, user_or_role ...]
[WITH ADMIN OPTION];
user_or_role:
user_name | role_name
参数解释
| 参数 | 描述 |
|---|---|
| priv_type | 指定授予的权限类型,可以授予多个权限,多个权限间使用英文逗号(,)隔开。具体的权限类型及其说明请参见 seekdb 的权限分类。注意:PROXY 参数当前版本仅记录该关键字语法,功能不生效。 |
| column_name_list | 可选项,用于授予列级权限的列表,授予的权限仅作用于列出的列上。如果不指定,则权限适用于整个表或对象。详细介绍信息,参见 直接授予权限。 |
| object_type | 可选项,表示授权的对象类型(即权限应用的对象类型)。详细介绍可参见下文 object_type。 |
| priv_level | 指定授予权限的层级。具有以下格式:
|
| user | 指定要授予权限的用户,可以是一个或多个用户,多个用户间使用英文逗号(,)隔开。如果用户不存在,该语句会直接创建用户。 |
| auth_plugin | 用于指定用户身份验证的方式,目前仅支持 mysql_native_password 身份验证插件。 |
| BY password | 为待授权的用户指定一个密码,此处密码为明文,存入 mysql.user 表后,服务器端会变为密文存储下来。如果密码中包含特殊字符 ~!@#%^&*_-+=`|()[]:;',.?/,需使用英文引号('' 或 "")包含。 |
| BY PASSWORD password | 为待授权的用户指定一个密码,此处密码为密文,将直接存入 mysql.user 表。 |
| WITH GRANT OPTION | 指定权限是否允许转授,取消授权时级联。 |
| role_name | 指定角色的名称。 |
| WITH ADMIN OPTION | 指定角色权限是否允许转授,取消授权时不级联。 |
object_type
提示
在使用 object_type 子句时,需要确保所指定的对象确实是对应的类型,否则将导致语法错误。
-
TABLE:表示权限应用的对象类型是表。 -
FUNCTION