GRANT语句用于系统管理员授予User某些权限。

    格式

    1. GRANT priv_type
    2.     ON priv_level
    3.     TO user_specification [, user_specification]...
    4. [WITH with_option ...]
    5. priv_level:
    6. *
    7. | *.*
    8. | db_name.*
    9. | db_name.tbl_name
    10. | tbl_name
    11. | db_name.rountine_name
    12. user_specification:
    13. user [IDENTIFIED BY [PASSWORD] password’]
    14. with_option:
    15. GRANT OPTION

    权限可以分为以下几个层级:

    • 全局层级:适用于所有的数据库。使用GRANT ALL ON .授予全局权限。
    • 数据库层级:适用于一个给定数据库中的所有目标。使用GRANT ALL ON db_name.*授予数据库权限。
    • 表层级:表权限适用于一个给定表中的所有列。使用GRANT ALL ONdb_name.tbl_name授予表权限。

    语句中的参数说明如下:

    • 给特定用户授予权限。如果用户不存在,可以直接创建用户。sql_mode=’no_auto_create_user’,同时没有identified by指定密码时,不可以直接创建用户。

    • 当前用户必须拥有被授予的权限(例如,user1把表t1的SELECT权限授予user2,则user1必须拥有表t1的SELECT的权限),并且拥有GRANT OPTION权限,才能授予成功。

    • 用户授权后,该用户只有重新连接OceanBase,权限才能生效。

    • 用“代替table_name*,表示赋予全局权限,即对数据库中的所有表赋权。

    • 同时把多个权限赋予用户时,权限类型用“,”隔开。

    • 同时给多个用户授权时,用户名用“,”隔开。

    • priv_type的值如权限类型表所示。

    权限类型表

    权限

    说明

    ALL PRIVILEGES

    除GRANT OPTION以外所有权限。

    ALTER

    ALTER TABLE的权限。

    CREATE

    CREATE TABLE的权限。

    CREATE USER

    CREATE USER,DROPUSER,RENAME USER和REVOKE ALLPRIVILEGES的权限。

    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权限

    说明

    说明:目前没有change effective tenant的权限控制,sys租户下的用户都可以。

    示例

    执行以下命令给 obsqluser01 用户赋予所有权限。

    1. GRANT ALL PRIVILEGES ON *.* TO test1 with grant option;