如何在Snowflake中查询指定Schema的已授予权限?
Snowflake查询指定Schema授予权限的操作指南
报错原因排查
你执行命令报错一般分为两类情况:
- 语法错误:未指定Schema所属的数据库上下文、Schema名称包含特殊字符/大小写敏感未加双引号,都会触发语法识别失败。
- 权限不足:执行
SHOW GRANTS的用户所属角色,需要对目标Schema持有MANAGE GRANTS或OWNERSHIP权限,否则会触发未授权报错。
正确操作方法
基础查询命令
需要补全Schema的完整路径,标准语法如下:
SHOW GRANTS ON SCHEMA <数据库名>.<Schema名>;
示例:查询PROD数据库下的ANALYSISSchema的所有权限:
SHOW GRANTS ON SCHEMA PROD.ANALYSIS;
如果Schema名称为小写、包含空格或特殊字符,需要用双引号包裹名称:
SHOW GRANTS ON SCHEMA PROD."user_behavior_schema";
如果不想每次写全路径,可以先切换当前会话的数据库上下文再执行查询:
USE DATABASE <数据库名>; SHOW GRANTS ON SCHEMA <Schema名>;
权限不足的解决方案
确认语法无误仍报错的情况下,可联系账号管理员为你所属的角色开通对应权限,授权命令如下:
GRANT MANAGE GRANTS ON SCHEMA <数据库名>.<Schema名> TO ROLE <你的角色名>;
进阶结构化查询
如果需要对权限结果做过滤、统计等二次处理,可以直接查询Snowflake内置的信息模式视图:
SELECT GRANTEE, PRIVILEGE_TYPE, GRANTOR, IS_GRANTABLE FROM <数据库名>.INFORMATION_SCHEMA.OBJECT_PRIVILEGES WHERE OBJECT_TYPE = 'SCHEMA' AND OBJECT_NAME = '<Schema名>';
该视图返回的字段更规范,方便做权限审计类场景使用。
内容的提问来源于stack exchange,提问作者Maryo David
相关产品推荐
相关产品推荐

