云数据库OceanBase入门教程 OceanBase GRANT

2024-02-26 开发教程 云数据库OceanBase入门教程 匿名 1

描述

该语句用于系统管理员授予 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.rountine_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)