7.0 KiB
7.0 KiB
GRANT
描述
该语句用于系统管理员授予 User 某些权限。 说明
-
当前用户必须拥有被授予的权限(例如,user1 把表 t1 的 SELECT 权限授予 user2,则 user1 必须拥有表 t1 的 SELECT 的权限),并且拥有 GRANT OPTION 权限,才能授予成功。
-
用户授权后,该用户只有重新连接OceanBase,权限才能生效。
格式
GRANT priv_type
ON priv_level
TO user_specification [, user_specification]...
[WITH with_option ...]
privilege_type:
ALTER
| CREATE
| CREATE USER
| CREATE VIEW
| DELETE
| DROP
| GRANT OPTION
| INDEX
| INSERT
| PROCESS
| SELECT
| SHOW DATABASES
| SHOW VIEW
| SUPER
| UPDATE
| USAGE
| CREATE SYNONYM
priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name
user_specification:
user [IDENTIFIED BY [PASSWORD] 'password']
with_option:
GRANT OPTION
参数解释
| 参数 | 描述 |
|---|---|
| priv_type | 指定授予的权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时把多个权限赋予用户时,权限类型用","隔开。 |
| priv_level | 指定授予权限的层级。权限可以分为以下几个层级: * 全局层级:适用于所有的数据库。使用 GRANT ALL ON *.*授予全局权限。 * 数据库层级:适用于一个给定数据库中的所有目标。使用 GRANT ALL ON db_name.* 授予数据库权限。 * 表层级:表权限适用于一个给定表中的所有列。使用 GRANT ALL ON db_name.tbl_name 授予表权限。 用"*"代替table_name,表示赋予全局权限,即对数据库中的所有表赋权。 |
| user_specification | 给特定用户授予权限。如果用户不存在,可以直接创建用户。 sql_mode='no_auto_create_user',同时没有identified by 指定密码时,不可以直接创建用户。 同时给多个用户授权时,用户名用","隔开。 |
| user IDENTIFIED BY 'password' | 此处密码为明文。 |
| user IDENTIFIED BY PASSWORD 'password' | 此处密码为密文。 |
| with_option | 指定权限是否允许转授 |
可以授予的权限类型如下表所示。
权限类型说明表
| 权限 | 说明 |
|---|---|
| ALL PRIVILEGES | 除GRANT OPTION以外所有权限。 |
| ALTER | ALTER TABLE的权限。 |
| CREATE | CREATE TABLE的权限。 |
| CREATE USER | CREATE USER,DROP USER,RENAME USER和REVOKE ALL PRIVILEGES的权限。 |
| CREATE TABLEGROUP | 全局CREATE TABLEGROUP的权限。 |
| DELETE | DELETE的权限。 |
| DROP | DROP的权限。 |
| GRANT OPTION | GRANT OPTION的权限。 |
| INSERT | INSERT的权限。 |
| SELECT | SELECT的权限。 |
| UPDATE | UPDATE的权限。 |
| SUPER | SET GLOBAL修改全局系统参数的权限。 |
| SHOW DATABASES | 全局 SHOW DATABASES的权限。 |
| INDEX | CREATE INDEX, DROP INDEX的权限 |
| CREATE VIEW | 创建、删除视图的权限。 |
| SHOW VIEW | SHOW CREATE VIEW权限。 |
| CREATE SYNONYM | 创建同义词的权限。 |
说明
目前没有 change effective tenant 的权限控制,故 sys 租户下的用户都可以进行授权。
示例
- 执行以下命令给用户 obsqluser01 赋予所有权限。
OceanBase(admin@TEST)>GRANT ALL PRIVILEGES ON *.* TO obsqluser01 with grant option;
Query OK, 0 rows affected (0.03 sec)