权限管理

本文档为 V2.0.7 版本起权限管理的 SQL 手册,详细功能使用可见权限管理,如需查阅 V2.0.7 版本之前权限管理的功能介绍可参考权限管理

1. 权限列表

2. SQL 语句

2.1 用户与角色管理

  1. 创建用户(需 SECURITY 权限)
CREATE USER <USERNAME> <PASSWORD>   
eg: CREATE USER user1 'Passwd@202604';
  1. 修改密码

用户可以修改自己的密码,但修改其他用户密码需要具备 SECURITY 权限。

ALTER USER <USERNAME> SET PASSWORD <password>
eg: ALTER USER tempuser SET PASSWORD 'Newpwd@202604';
  1. 删除用户(需 SECURITY 权限)
DROP USER <USERNAME>
eg: DROP USER user1;
  1. 创建角色 (需 SECURITY 权限)
CREATE ROLE <ROLENAME>
eg: CREATE ROLE role1;
  1. 删除角色 (需 SECURITY 权限)
DROP ROLE <ROLENAME>
eg: DROP ROLE role1;
  1. 赋予用户角色 (需 SECURITY 权限)
GRANT ROLE <ROLENAME> TO <USERNAME>
eg: GRANT ROLE admin TO user1;
  1. 移除用户角色 (需 SECURITY 权限)
REVOKE ROLE <ROLENAME> FROM <USERNAME>
eg: REVOKE ROLE admin FROM user1;
  1. 列出所有用户(需 SECURITY 权限)
LIST USER;
  1. 列出所有的角色 (需 SECURITY 权限)
LIST ROLE;
  1. 列出指定角色下所有用户(需 SECURITY 权限)
LIST USER OF ROLE <ROLENAME>
eg: LIST USER OF ROLE roleuser;
  1. 列出指定用户下的所有角色

用户可以列出自己的角色,但列出其他用户的角色需要拥有 SECURITY 权限。

LIST ROLE OF USER <USERNAME>
eg: LIST ROLE OF USER tempuser;
  1. 列出用户所有权限

用户可以列出自己的权限信息,但列出其他用户的权限需要拥有 SECURITY 权限。

LIST PRIVILEGES OF USER <USERNAME>
eg: LIST PRIVILEGES OF USER tempuser;
  1. 列出角色所有权限

用户可以列出自己具有的角色的权限信息,列出其他角色的权限需要有 SECURITY 权限。

LIST PRIVILEGES OF ROLE <ROLENAME>
eg: LIST PRIVILEGES OF ROLE actor;

2.2 权限管理

2.2.1 授予权限

  1. 给用户授予管理用户的权限
GRANT SECURITY TO USER <USERNAME>
eg: GRANT SECURITY TO USER TEST_USER;
  1. 给用户授予创建数据库及在数据库范围内创建表的权限,且允许用户在该范围内管理权限
GRANT CREATE ON DATABASE <DATABASE> TO USER <USERNAME> WITH GRANT OPTION
eg: GRANT CREATE ON DATABASE TESTDB TO USER TEST_USER WITH GRANT OPTION;
  1. 给角色授予查询数据库的权限
GRANT SELECT ON DATABASE <DATABASE>TO ROLE <ROLENAME>
eg: GRANT SELECT ON DATABASE TESTDB TO ROLE TEST_ROLE;
  1. 给用户授予查询表的权限
GRANT SELECT ON <DATABASE>.<TABLENAME> TO USER <USERNAME>
eg: GRANT SELECT ON TESTDB.TESTTABLE TO USER TEST_USER;
  1. 给角色授予查询所有数据库及表的权限
GRANT SELECT ON ANY TO ROLE <ROLENAME>
eg: GRANT SELECT ON ANY TO ROLE TEST_ROLE;
  1. ALL 语法糖:ALL 表示对象范围内所有权限,可以使用 ALL 字段灵活地授予权限。
GRANT ALL TO USER TESTUSER;
-- 将用户可以获取的所有权限授予给用户,包括全局权限和 ANY 范围的所有数据权限

GRANT ALL ON ANY TO USER TESTUSER;
--  ANY 范围内可以获取的所有权限授予给用户,执行该语句后,用户将拥有在所有数据库上的所有数据权限

GRANT ALL ON DATABASE TESTDB TO USER TESTUSER;
--  DB 范围内可以获取的所有权限授予给用户,执行该语句后,用户将拥有在该数据库上的所有数据权限

GRANT ALL ON TABLE TESTTABLE TO USER TESTUSER;
--  TABLE 范围内可以获取的所有权限授予给用户,执行该语句后,用户将拥有在该表上的所有数据权限

2.2.2 撤销权限

  1. 取消用户管理用户的权限
REVOKE SECURITY FROM USER <USERNAME>
eg: REVOKE SECURITY FROM USER TEST_USER;
  1. 取消用户创建数据库及在数据库范围内创建表的权限
REVOKE CREATE ON DATABASE <DATABASE> FROM USER <USERNAME>
eg: REVOKE CREATE ON DATABASE TEST_DB FROM USER TEST_USER;
  1. 取消用户查询表的权限
REVOKE SELECT ON <DATABASE>.<TABLENAME> FROM USER <USERNAME>
eg: REVOKE SELECT ON TESTDB.TESTTABLE FROM USER TEST_USER;
  1. 取消用户查询所有数据库及表的权限
REVOKE SELECT ON ANY FROM USER <USERNAME>
eg: REVOKE SELECT ON ANY FROM USER TEST_USER;
  1. ALL 语法糖:ALL 表示对象范围内所有权限,可以使用 ALL 字段灵活地撤销权限。
REVOKE ALL FROM USER TESTUSER;
-- 取消用户所有的全局权限以及 ANY 范围的所有数据权限

REVOKE ALL ON ANY FROM USER TESTUSER;
-- 取消用户 ANY 范围的所有数据权限,不会影响 DB 范围和 TABLE 范围的权限

REVOKE ALL ON DATABASE TESTDB FROM USER TESTUSER;
-- 取消用户在 DB 上的所有数据权限,不会影响 TABLE 权限

REVOKE ALL ON TABLE TESTDB FROM USER TESTUSER;
-- 取消用户在 TABLE 上的所有数据权限

2.2.3 查看用户权限

LIST PRIVILEGES OF USER <USERNAME>
eg: LIST PRIVILEGES OF USER tempuser