本节主要介绍 OceanBase 数据库用户权限修改的命令示例及操作方法。
注意事项
对于授予权限操作:
进行用户授权操作前,请确保当前用户拥有被授予的权限,并且拥有
GRANT OPTION
权限。授权后,被授权的用户需要重新连接 OceanBase 数据库,权限才会生效。
对于移除权限操作:
当前用户必须拥有被移除的权限,并且拥有
GRANT OPTION
权限。移除
ALL PRIVILEGES
和GRANT OPTION
权限时,当前用户必须拥有全局GRANT OPTION
权限,或者对权限表的UPDATE
及DELETE
权限。权限移除操作不会级联。例如,用户
user1
为user2
授予了某些权限,移除user1
的权限并不会同时也移除user2
的相应权限。
通过 SQL 语句授予或移除权限
MySQL 模式
MySQL 模式下用户权限管理语句的语法如下:
grant_stmt:
GRANT privilege_type_list ON privilege_level TO user_option_list [WITH GRANT OPTION];
revoke_stmt:
REVOKE privilege_type_list ON privilege_level FROM user_name_list;
show_grants_stmt:
SHOW GRANTS [FOR user_name];
privilege_type_list:
{ALL [PRIVILEGES] | privilege_type [, privilege_type ...]}
privilege_type:
ALTER
| CREATE
| CREATE USER
| CREATE VIEW
| DELETE
| DROP
| GRANT OPTION
| INDEX
| INSERT
| PROCESS
| SELECT
| SHOW DATABASES
| SHOW VIEW
| SUPER
| UPDATE
| USAGE
privilege_level:
*
| *.*
| database_name.*
| database_name.table_name
| table_name
user_option_list:
user_option [, user_option ...]
user_option:
user_name [IDENTIFIED BY 'password']
password:
STR_VALUE
user_name_list:
user_name [, user_name ...]
相关示例如下:
授予权限
obclient> GRANT ALL PRIVILEGES ON *.* TO demo WITH GRANT OPTION;
移除权限
obclient> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'demo';
Query OK, 0 rows affected (0.03 sec)
Oracle 模式
Oracle 模式下用户权限管理语句的语法如下:
grant_stmt:
/*授予对象权限*/
GRANT obj_with_col_priv_list
ON obj_clause TO grant_user_list [WITH GRANT OPTION];
/*授予系统权限*/
GRANT {system_privilege_list | ALL PRIVILEGES}
TO grantee_user [IDENTIFIED BY password] [WITH {GRANT | ADMID} OPTION];
/*授予角色*/
GRANT role_list TO grantee_user [IDENTIFIED BY password] [WITH {GRANT | ADMID} OPTION];
revoke_stmt:
/*撤销对象权限*/
REVOKE obj_privileges
ON obj_clause FROM user_list;
/*撤销系统权限*/
REVOKE {system_privilege_list | ALL PRIVILEGES}
FROM user_list;
REVOKE ALL [PRIVILEGES], GRANT_OPTION FROM user_list;
/*撤销角色*/
REVOKE role_list FROM user;
obj_with_col_priv_list:
obj_with_col_priv
| obj_with_col_priv_list, obj_with_col_priv
obj_with_col_priv:
obj_privilege [column_list]
obj_privileges:
obj_privilege [, obj_privilege ...]
obj_privilege:
ALTER
| AUDIT
| COMMENT
| DELETE
| GRANT
| INDEX
| INSERT
| LOCK
| RENAME
| SELECT
| UPDATE
| REFERENCES
| EXECUTE
| CREATE
| FLASHBACK
| READ
| WRITE
| DEBUG
obj_clause:
relation_name
| relation_name '.' relation_name
| DIRECTORY relation_name
grant_user_list:
grant_user [, grant_user ...]
system_privilege_list:
system_privilege [, system_privilege ...]
system_privilege:
CREATE SESSION
| EXEMPT REDACTION POLICY
| SYSDBA
| SYSOPER
| SYSBACKUP
| CREATE TABLE
| CREATE ANY TABLE
| ALTER ANY TABLE
| BACKUP ANY TABLE
| DROP ANY TABLE
| LOCK ANY TABLE
| COMMENT ANY TABLE
| SELECT ANY TABLE
| INSERT ANY TABLE
| UPDATE ANY TABLE
| DELETE ANY TABLE
| FLASHBACK ANY TABLE
| CREATE ROLE
| DROP ANY ROLE
| GRANT ANY ROLE
| ALTER ANY ROLE
| AUDIT ANY
| GRANT ANY PRIVILEGE
| GRANT ANY OBJECT PRIVILEGE
| CREATE ANY INDEX
| ALTER ANY INDEX
| DROP ANY INDEX
| CREATE ANY VIEW
| DROP ANY VIEW
| CREATE VIEW
| SELECT ANY DICTIONARY
| CREATE PROCEDURE
| CREATE ANY PROCEDURE
| ALTER ANY PROCEDURE
| DROP ANY PROCEDURE
| EXECUTE ANY PROCEDURE
| CREATE SYNONYM
| CREATE ANY SYNONYM
| DROP ANY SYNONYM
| CREATE PUBLIC SYNONYM
| DROP PUBLIC SYNONYM
| CREATE SEQUENCE
| CREATE ANY SEQUENCE
| ALTER ANY SEQUENCE
| DROP ANY SEQUENCE
| SELECT ANY SEQUENCE
| CREATE TRIGGER
| CREATE ANY TRIGGER
| ALTER ANY TRIGGER
| DROP ANY TRIGGER
| CREATE PROFILE
| ALTER PROFILE
| DROP PROFILE
| CREATE USER
| ALTER USER
| DROP USER
| CREATE TYPE
| CREATE ANY TYPE
| ALTER ANY TYPE
| DROP ANY TYPE
| EXECUTE ANY TYPE
| UNDER ANY TYPE
| PURGE DBA_RECYCLEBIN
| CREATE ANY OUTLINE
| ALTER ANY OUTLINE
| DROP ANY OUTLINE
| SYSKM
| CREATE TABLESPACE
| ALTER TABLESPACE
| DROP TABLESPACE
| SHOW PROCESS
| ALTER SYSTEM
| CREATE DATABASE LINK
| CREATE PUBLIC DATABASE LINK
| DROP DATABASE LINK
| ALTER SESSION
| ALTER DATABASE
role_list:
role [, role ...]
相关示例如下:
授予权限
obclient> GRANT SELECT ON demo.table_test TO demo;
将所有系统权限授权给用户
obclient> GRANT ALL PRIVILEGES TO user_name;
移除权限
obclient> REVOKE SELECT ON demo.table_test FROM demo;
Query OK, 0 rows affected (0.03 sec)
从用户处收回所有系统权限
obclient> REVOKE ALL PRIVILEGES FROM user_name;
通过 OCP 修改 MySQL 模式的用户权限
OCP 从 V2.5.0 版本开始支持修改 MySQL 兼容模式的用户权限。
前提条件
修改用户权限前,需要确认以下信息:
当前 OCP 用户需要具有租户修改权限,OCP 用户权限相关信息请参见对应版本的《OCP 用户指南》文档。
当前 OCP 用户的密码箱中具有该租户的 root 密码,OCP 用户的密码箱相关操作请参见对应版本的《OCP 用户指南》文档。
操作步骤
登录 OCP。
在左导航栏上单击 租户,进入租户概览页面。
在租户列表中,筛选 租户模式 为 MySQL 的租户,单击其租户名,进入 总览 页面。
在左侧导航栏上,单击 用户管理。
在用户列表中,找到待修改权限的用户,在对应的 操作 列中,单击 修改权限。
在弹出的对话框中,修改全局权限和数据库权限。
全局权限 和 数据库库权限 中涉及的权限类型说明如下表所示。
单击 提交。