权限管理
2026/6/11大约 7 分钟
权限管理
本文档为 V2.0.7 版本起权限管理的 SQL 手册,详细功能使用可见权限管理,如需查阅 V2.0.7 版本之前权限管理的功能介绍可参考权限管理
1. 权限列表
| 权限类型 | 权限名称 | 生效范围 | 描述 |
|---|---|---|---|
| 全局权限 | SYSTEM | 全局 | 允许用户创建、修改、删除数据库。 |
| 允许用户创建、修改、删除表及表视图。 | |||
| 允许用户创建、删除、查看用户自定义函数。 | |||
| 允许用户创建、开始、停止、删除、查看PIPE。允许用户创建、删除、查看PIPEPLUGINS。 | |||
| 允许用户查询、取消查询。允许用户查看变量。允许用户查看集群状态。 | |||
| 允许用户创建、删除、查看深度学习模型。 | |||
| SECURITY | 全局 | 允许用户创建用户。 | |
| 允许用户删除用户。 | |||
| 允许用户修改用户密码。 | |||
| 允许用户查看用户的权限信息。 | |||
| 允许用户列出所有用户。 | |||
| 允许用户创建角色。 | |||
| 允许用户删除角色。 | |||
| 允许用户查看角色的权限信息。 | |||
| 允许用户将角色授予某个用户或撤销。 | |||
| 允许用户列出所有角色。 | |||
| 数据权限 | CREATE | ANY | 允许创建任意表、创建任意数据库。 |
| 数据库 | 允许用户在该数据库下创建表;允许用户创建该名称的数据库。 | ||
| 表 | 允许用户创建该名称的表。 | ||
| ALTER | ANY | 允许修改任意表的定义、任意数据库的定义。 | |
| 数据库 | 允许用户修改数据库的定义,允许用户修改数据库下表的定义。 | ||
| 表 | 允许用户修改表的定义。 | ||
| SELECT | ANY | 允许查询系统内任意数据库中任意表的数据。 | |
| 数据库 | 允许用户查询该数据库中任意表的数据。 | ||
| 表 | 允许用户查询该表中的数据。执行多表查询时,数据库仅展示用户有权限访问的数据。 | ||
| INSERT | ANY | 允许任意数据库的任意表插入/更新数据。 | |
| 数据库 | 允许用户向该数据库范围内任意表插入/更新数据。 | ||
| 表 | 允许用户向该表中插入/更新数据。 | ||
| DELETE | ANY | 允许删除任意表的数据。 | |
| 数据库 | 允许用户删除该数据库范围内的数据。 | ||
| 表 | 允许用户删除该表中的数据。 |
2. SQL 语句
2.1 用户与角色管理
- 创建用户(需 SECURITY 权限)
CREATE USER <USERNAME> <PASSWORD>
eg: CREATE USER user1 'passwd';- 修改密码
用户可以修改自己的密码,但修改其他用户密码需要具备 SECURITY 权限。
ALTER USER <USERNAME> SET PASSWORD <password>
eg: ALTER USER tempuser SET PASSWORD 'newpwd';- 删除用户(需 SECURITY 权限)
DROP USER <USERNAME>
eg: DROP USER user1;- 创建角色 (需 SECURITY 权限)
CREATE ROLE <ROLENAME>
eg: CREATE ROLE role1;- 删除角色 (需 SECURITY 权限)
DROP ROLE <ROLENAME>
eg: DROP ROLE role1;- 赋予用户角色 (需 SECURITY 权限)
GRANT ROLE <ROLENAME> TO <USERNAME>
eg: GRANT ROLE admin TO user1;- 移除用户角色 (需 SECURITY 权限)
REVOKE ROLE <ROLENAME> FROM <USERNAME>
eg: REVOKE ROLE admin FROM user1;- 列出所有用户(需 SECURITY 权限)
LIST USER;- 列出所有的角色 (需 SECURITY 权限)
LIST ROLE;- 列出指定角色下所有用户(需 SECURITY 权限)
LIST USER OF ROLE <ROLENAME>
eg: LIST USER OF ROLE roleuser;- 列出指定用户下的所有角色
用户可以列出自己的角色,但列出其他用户的角色需要拥有 SECURITY 权限。
LIST ROLE OF USER <USERNAME>
eg: LIST ROLE OF USER tempuser;- 列出用户所有权限
用户可以列出自己的权限信息,但列出其他用户的权限需要拥有 SECURITY 权限。
LIST PRIVILEGES OF USER <USERNAME>
eg: LIST PRIVILEGES OF USER tempuser;- 列出角色所有权限
用户可以列出自己具有的角色的权限信息,列出其他角色的权限需要有 SECURITY 权限。
LIST PRIVILEGES OF ROLE <ROLENAME>
eg: LIST PRIVILEGES OF ROLE actor;2.2 权限管理
2.2.1 授予权限
- 给用户授予管理用户的权限
GRANT SECURITY TO USER <USERNAME>
eg: GRANT SECURITY TO USER TEST_USER;- 给用户授予创建数据库及在数据库范围内创建表的权限,且允许用户在该范围内管理权限
GRANT CREATE ON DATABASE <DATABASE> TO USER <USERNAME> WITH GRANT OPTION
eg: GRANT CREATE ON DATABASE TESTDB TO USER TEST_USER WITH GRANT OPTION;- 给角色授予查询数据库的权限
GRANT SELECT ON DATABASE <DATABASE>TO ROLE <ROLENAME>
eg: GRANT SELECT ON DATABASE TESTDB TO ROLE TEST_ROLE;- 给用户授予查询表的权限
GRANT SELECT ON <DATABASE>.<TABLENAME> TO USER <USERNAME>
eg: GRANT SELECT ON TESTDB.TESTTABLE TO USER TEST_USER;- 给角色授予查询所有数据库及表的权限
GRANT SELECT ON ANY TO ROLE <ROLENAME>
eg: GRANT SELECT ON ANY TO ROLE TEST_ROLE;- 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 撤销权限
- 取消用户管理用户的权限
REVOKE SECURITY FROM USER <USERNAME>
eg: REVOKE SECURITY FROM USER TEST_USER;- 取消用户创建数据库及在数据库范围内创建表的权限
REVOKE CREATE ON DATABASE <DATABASE> FROM USER <USERNAME>
eg: REVOKE CREATE ON DATABASE TEST_DB FROM USER TEST_USER;- 取消用户查询表的权限
REVOKE SELECT ON <DATABASE>.<TABLENAME> FROM USER <USERNAME>
eg: REVOKE SELECT ON TESTDB.TESTTABLE FROM USER TEST_USER;- 取消用户查询所有数据库及表的权限
REVOKE SELECT ON ANY FROM USER <USERNAME>
eg: REVOKE SELECT ON ANY FROM USER TEST_USER;- 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