本节主要介绍 OceanBase 数据库用户权限修改的命令示例及操作方法。

注意事项

对于授予权限操作:

  • 进行用户授权操作前,请确保当前用户拥有被授予的权限,并且拥有 GRANT OPTION 权限。

  • 授权后,被授权的用户需要重新连接 OceanBase 数据库,权限才会生效。

对于移除权限操作:

  • 当前用户必须拥有被移除的权限,并且拥有 GRANT OPTION 权限。

  • 移除 ALL PRIVILEGESGRANT OPTION 权限时,当前用户必须拥有全局 GRANT OPTION 权限,或者对权限表的 UPDATEDELETE 权限。

  • 权限移除操作不会级联。例如,用户 user1user2 授予了某些权限,移除 user1 的权限并不会同时也移除 user2 的相应权限。

通过 SQL 语句授予或移除权限

  • MySQL 模式

    MySQL 模式下用户权限管理语句的语法如下:

    1. grant_stmt:
    2. GRANT privilege_type_list ON privilege_level TO user_option_list [WITH GRANT OPTION];
    3. revoke_stmt:
    4. REVOKE privilege_type_list ON privilege_level FROM user_name_list;
    5. show_grants_stmt:
    6. SHOW GRANTS [FOR user_name];
    7. privilege_type_list:
    8. {ALL [PRIVILEGES] | privilege_type [, privilege_type ...]}
    9. privilege_type:
    10. ALTER
    11. | CREATE
    12. | CREATE USER
    13. | CREATE VIEW
    14. | DELETE
    15. | DROP
    16. | GRANT OPTION
    17. | INDEX
    18. | INSERT
    19. | PROCESS
    20. | SELECT
    21. | SHOW DATABASES
    22. | SHOW VIEW
    23. | SUPER
    24. | UPDATE
    25. | USAGE
    26. privilege_level:
    27. *
    28. | *.*
    29. | database_name.*
    30. | database_name.table_name
    31. | table_name
    32. user_option_list:
    33. user_option [, user_option ...]
    34. user_option:
    35. user_name [IDENTIFIED BY 'password']
    36. password:
    37. STR_VALUE
    38. user_name_list:
    39. user_name [, user_name ...]

    相关示例如下:

    • 授予权限

      1. obclient> GRANT ALL PRIVILEGES ON *.* TO demo WITH GRANT OPTION;
    • 移除权限

      1. obclient> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'demo';
      2. Query OK, 0 rows affected (0.03 sec)
  • Oracle 模式

    Oracle 模式下用户权限管理语句的语法如下:

    1. grant_stmt:
    2. /*授予对象权限*/
    3. GRANT obj_with_col_priv_list
    4. ON obj_clause TO grant_user_list [WITH GRANT OPTION];
    5. /*授予系统权限*/
    6. GRANT {system_privilege_list | ALL PRIVILEGES}
    7. TO grantee_user [IDENTIFIED BY password] [WITH {GRANT | ADMID} OPTION];
    8. /*授予角色*/
    9. GRANT role_list TO grantee_user [IDENTIFIED BY password] [WITH {GRANT | ADMID} OPTION];
    10. revoke_stmt:
    11. /*撤销对象权限*/
    12. REVOKE obj_privileges
    13. ON obj_clause FROM user_list;
    14. /*撤销系统权限*/
    15. REVOKE {system_privilege_list | ALL PRIVILEGES}
    16. FROM user_list;
    17. REVOKE ALL [PRIVILEGES], GRANT_OPTION FROM user_list;
    18. /*撤销角色*/
    19. REVOKE role_list FROM user;
    20. obj_with_col_priv_list:
    21. obj_with_col_priv
    22. | obj_with_col_priv_list, obj_with_col_priv
    23. obj_with_col_priv:
    24. obj_privilege [column_list]
    25. obj_privileges:
    26. obj_privilege [, obj_privilege ...]
    27. obj_privilege:
    28. ALTER
    29. | AUDIT
    30. | COMMENT
    31. | DELETE
    32. | GRANT
    33. | INDEX
    34. | INSERT
    35. | LOCK
    36. | RENAME
    37. | SELECT
    38. | UPDATE
    39. | REFERENCES
    40. | EXECUTE
    41. | CREATE
    42. | FLASHBACK
    43. | READ
    44. | WRITE
    45. | DEBUG
    46. obj_clause:
    47. relation_name
    48. | relation_name '.' relation_name
    49. | DIRECTORY relation_name
    50. grant_user_list:
    51. grant_user [, grant_user ...]
    52. system_privilege_list:
    53. system_privilege [, system_privilege ...]
    54. system_privilege:
    55. CREATE SESSION
    56. | EXEMPT REDACTION POLICY
    57. | SYSDBA
    58. | SYSOPER
    59. | SYSBACKUP
    60. | CREATE TABLE
    61. | CREATE ANY TABLE
    62. | ALTER ANY TABLE
    63. | BACKUP ANY TABLE
    64. | DROP ANY TABLE
    65. | LOCK ANY TABLE
    66. | COMMENT ANY TABLE
    67. | SELECT ANY TABLE
    68. | INSERT ANY TABLE
    69. | UPDATE ANY TABLE
    70. | DELETE ANY TABLE
    71. | FLASHBACK ANY TABLE
    72. | CREATE ROLE
    73. | DROP ANY ROLE
    74. | GRANT ANY ROLE
    75. | ALTER ANY ROLE
    76. | AUDIT ANY
    77. | GRANT ANY PRIVILEGE
    78. | GRANT ANY OBJECT PRIVILEGE
    79. | CREATE ANY INDEX
    80. | ALTER ANY INDEX
    81. | DROP ANY INDEX
    82. | CREATE ANY VIEW
    83. | DROP ANY VIEW
    84. | CREATE VIEW
    85. | SELECT ANY DICTIONARY
    86. | CREATE PROCEDURE
    87. | CREATE ANY PROCEDURE
    88. | ALTER ANY PROCEDURE
    89. | DROP ANY PROCEDURE
    90. | EXECUTE ANY PROCEDURE
    91. | CREATE SYNONYM
    92. | CREATE ANY SYNONYM
    93. | DROP ANY SYNONYM
    94. | CREATE PUBLIC SYNONYM
    95. | DROP PUBLIC SYNONYM
    96. | CREATE SEQUENCE
    97. | CREATE ANY SEQUENCE
    98. | ALTER ANY SEQUENCE
    99. | DROP ANY SEQUENCE
    100. | SELECT ANY SEQUENCE
    101. | CREATE TRIGGER
    102. | CREATE ANY TRIGGER
    103. | ALTER ANY TRIGGER
    104. | DROP ANY TRIGGER
    105. | CREATE PROFILE
    106. | ALTER PROFILE
    107. | DROP PROFILE
    108. | CREATE USER
    109. | ALTER USER
    110. | DROP USER
    111. | CREATE TYPE
    112. | CREATE ANY TYPE
    113. | ALTER ANY TYPE
    114. | DROP ANY TYPE
    115. | EXECUTE ANY TYPE
    116. | UNDER ANY TYPE
    117. | PURGE DBA_RECYCLEBIN
    118. | CREATE ANY OUTLINE
    119. | ALTER ANY OUTLINE
    120. | DROP ANY OUTLINE
    121. | SYSKM
    122. | CREATE TABLESPACE
    123. | ALTER TABLESPACE
    124. | DROP TABLESPACE
    125. | SHOW PROCESS
    126. | ALTER SYSTEM
    127. | CREATE DATABASE LINK
    128. | CREATE PUBLIC DATABASE LINK
    129. | DROP DATABASE LINK
    130. | ALTER SESSION
    131. | ALTER DATABASE
    132. role_list:
    133. role [, role ...]

    相关示例如下:

    • 授予权限

      1. obclient> GRANT SELECT ON demo.table_test TO demo;
    • 将所有系统权限授权给用户

      1. obclient> GRANT ALL PRIVILEGES TO user_name;
    • 移除权限

      1. obclient> REVOKE SELECT ON demo.table_test FROM demo;
      2. Query OK, 0 rows affected (0.03 sec)
    • 从用户处收回所有系统权限

      1. obclient> REVOKE ALL PRIVILEGES FROM user_name;

通过 OCP 修改 MySQL 模式的用户权限

OCP 从 V2.5.0 版本开始支持修改 MySQL 兼容模式的用户权限。

前提条件

修改用户权限前,需要确认以下信息:

  • 当前 OCP 用户需要具有租户修改权限,OCP 用户权限相关信息请参见对应版本的《OCP 用户指南》文档。

  • 当前 OCP 用户的密码箱中具有该租户的 root 密码,OCP 用户的密码箱相关操作请参见对应版本的《OCP 用户指南》文档。

操作步骤

  1. 登录 OCP。

  2. 在左导航栏上单击 租户,进入租户概览页面。

  3. 在租户列表中,筛选 租户模式MySQL 的租户,单击其租户名,进入 总览 页面。

  4. 在左侧导航栏上,单击 用户管理

  5. 在用户列表中,找到待修改权限的用户,在对应的 操作 列中,单击 修改权限

    修改权限

  6. 在弹出的对话框中,修改全局权限和数据库权限。

    全局权限数据库库权限 中涉及的权限类型说明如下表所示。

  7. 单击 提交