SHOW GRANTS
查询当前用户、指定角色或指定用户所拥有的权限,帮助了解权限设置情况,确保数据访问的安全性。
查看对象上的权限语法
查看某个具体对象(表、Schema、Workspace、VCluster、Function、Volume 等)上授予了哪些权限。
SHOW GRANTS ON TABLE [schema.]table_name;
SHOW GRANTS ON SCHEMA schema_name;
SHOW GRANTS ON WORKSPACE workspace_name;
SHOW GRANTS ON VCLUSTER vcluster_name;
SHOW GRANTS ON FUNCTION [schema.]function_name;
SHOW GRANTS ON VOLUME [schema.]volume_name;
SHOW GRANTS ON ROLE role_name;
使用示例
-- 查看表上的所有授权
SHOW GRANTS ON TABLE public.orders;
-- 查看 Schema 上的所有授权
SHOW GRANTS ON SCHEMA public;
-- 查看 VCluster 上的所有授权
SHOW GRANTS ON VCLUSTER DEFAULT;
-- 查看 Workspace 上的所有授权
SHOW GRANTS ON WORKSPACE my_workspace;
-- 查看 Function 上的所有授权
SHOW GRANTS ON FUNCTION public.image_to_text;
-- 查看 Volume 上的所有授权
SHOW GRANTS ON VOLUME public.shared_files;
返回列与
SHOW GRANTS TO ROLE
SHOW GRANTS TO ROLE
相同,见上方返回列说明。
Workspace 角色查看权限语法
-- 查看当前用户的权限
SHOW GRANTS;
-- 查询指定角色的权限
SHOW GRANTS TO ROLE role_name;
-- 查询指定用户的权限
SHOW GRANTS TO USER user_name;
-- 按返回列过滤
SHOW GRANTS [TO { ROLE role_name | USER user_name }] WHERE <condition>;
参数说明
| 参数 | 必填 | 说明 |
|---|
role_name
role_name | 是(查询角色时) | 需要查询权限的角色名称,该角色必须存在于当前工作空间中 |
user_name
user_name | 是(查询用户时) | 需要查询权限的用户名称,该用户必须存在于当前工作空间中 |
WHERE <condition>
WHERE <condition> | 否 | 按返回列过滤结果,如 WHERE granted_on = 'TABLE'
WHERE granted_on = 'TABLE' 、WHERE privilege LIKE 'SELECT%'
WHERE privilege LIKE 'SELECT%' 。权限较多时用它快速定位某类授权 |
返回列说明
| 列名 | 说明 |
|---|
granted_type
granted_type | 授权类型:ROLE
ROLE (角色授权)或 PRIVILEGE
PRIVILEGE (对象权限授权) |
privilege
privilege | 权限名称,如 SELECT TABLE
SELECT TABLE 、workspace_dev
workspace_dev 等 |
conditions
conditions | 附加条件(通常为空) |
granted_on
granted_on | 授权对象类型,如 ROLE
ROLE 、TABLE
TABLE 、SCHEMA
SCHEMA 等 |
object_name
object_name | 授权对象的完整名称(含工作空间前缀) |
granted_to
granted_to | 被授权的主体类型,如 ROLE
ROLE 或 USER
USER |
grantee_name
grantee_name | 被授权方的完整名称(含工作空间前缀) |
grantor_name
grantor_name | 执行授权操作的用户名称 |
grant_option
grant_option | 是否具有转授权限:true
true 表示可将该权限再授予其他用户 |
granted_time
granted_time | 授权时间 |
使用示例
-
查看当前用户的权限:
SHOW GRANTS;
-
查询角色
test_developer_role
test_developer_role
的权限:
SHOW GRANTS TO ROLE test_developer_role;
返回示例:
| granted_type | privilege | granted_on | object_name | granted_to | grantee_name | grantor_name | grant_option | granted_time |
|---|
| PRIVILEGE | CREATE TABLE | SCHEMA | quick_start.semantic_model_test | ROLE | quick_start.test_developer_role | quick_start.qiliang | false | 2025-03-27 20:43:39.419 |
-
查询用户
tester
tester
的权限:
SHOW GRANTS TO USER tester;
返回示例:
| granted_type | privilege | granted_on | object_name | granted_to | grantee_name | grantor_name | grant_option | granted_time |
|---|
| ROLE | workspace_dev | ROLE | quick_start.workspace_dev | USER | quick_start.tester | quick_start.qiliang | false | 2025-03-27 20:43:39.419 |
-
只看用户
tester
tester
在表上的授权:
SHOW GRANTS TO USER tester WHERE granted_on = 'TABLE';
MySQL 兼容模式下的输出
会话设置
cz.sql.compatible.target=MYSQL
cz.sql.compatible.target=MYSQL
后,
SHOW GRANTS
SHOW GRANTS
按 MySQL 的格式返回一列
Grants
Grants
,每行是一条等价的
GRANT
GRANT
语句,方便通过 MySQL 协议接入的工具、脚本解析权限。没有 MySQL 对应写法的内部权限不会出现在结果中。
SET cz.sql.compatible.target = MYSQL;
SHOW GRANTS TO USER tester WHERE Grants LIKE 'GRANT ALL PRIVILEGES%';
返回示例:
Grants |
GRANT ALL PRIVILEGES ON `information_schema`.* TO `tester`@`%` WITH GRANT OPTION |
GRANT ALL PRIVILEGES ON `system_meta_warehouse`.`CZ_AUTO_TUNING_GP_DEFAULT` TO `tester`@`%` WITH GRANT OPTION |
MySQL 兼容模式下,权限会合并成
GRANT ALL PRIVILEGES
GRANT ALL PRIVILEGES
或
GRANT SELECT
GRANT SELECT
等 MySQL 授权语句,与标准模式逐条列出角色和权限的形式不同。角色授权不会出现在结果中。
注意事项
- 执行此命令需要具备
workspace_admin
workspace_admin
或 security_admin
security_admin
角色,或者查询的是当前登录用户自身的权限。
- 返回结果包含直接授予的权限,以及通过角色间接获得的权限(
granted_type
granted_type
为 ROLE
ROLE
的行表示通过角色获得的权限)。
- 用户名和角色名区分大小写,请确保输入正确。
Instance 角色查看权限语法
-- 查询指定 Instance Role 的权限
SHOW GRANTS TO INSTANCE ROLE role_name;
参数说明
| 参数 | 必填 | 说明 |
|---|
role_name
role_name | 是 | 需要查询权限的 Instance Role 名称 |
Instance 使用示例
-- 查看某个 Instance Role 的权限
SHOW GRANTS TO INSTANCE ROLE instance_datamap_user;