在 PostgreSQL 中,用户要查询(SELECT)某个表,必须同时拥有该表所在 Schema 的 USAGE 权限。
A
正确
B
错误
在 PostgreSQL 中,用户要查询(SELECT)某个表,必须同时拥有该表所在 Schema 的 USAGE 权限。
答案:A(正确)
📍 原因分析 Schema 的 USAGE 权限是访问基础
PostgreSQL 的权限体系要求用户必须先拥有 Schema 的 USAGE 权限,才能访问该 Schema 下的所有对象(如表、视图等)。即使已授予表的 SELECT 权限,若缺少 Schema 的 USAGE 权限,查询仍会失败。
示例命令:
-- 授予用户对 Schema 的 USAGE 权限 GRANT USAGE ON SCHEMA public TO user_name; -- 再授予表的 SELECT 权限 GRANT SELECT ON TABLE table_name TO user_name;
权限设计的逻辑
Schema 是命名空间:Schema 定义了对象的逻辑分组,USAGE 权限相当于“进入该空间的钥匙”。
最小权限原则:通过分层控制(Schema → 表),避免直接暴露所有对象,提升安全性。
实际场景验证
若仅赋予表的 SELECT 权限但未赋予 Schema 的 USAGE 权限,执行查询时将报错:
ERROR: permission denied for schema public
这明确说明 Schema 权限是前置条件。
💡 总结
PostgreSQL 的权限管理采用层级控制:
Schema 的 USAGE 权限 → 表级权限(如 SELECT)
缺少前者时,后者即使存在也无法生效。这一机制确保了权限管理的精细化和安全性。
因此,题目中的描述完全正确 ✅。




