全部产品

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.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)