PostgreSQL只读用户能否创建临时表?如何仅授予该权限?
PostgreSQL只读用户与临时表权限问题
默认行为
- 默认情况下,只读用户(仅拥有
SELECT权限的用户)无法创建临时表。因为创建临时表需要CREATE权限,而只读用户通常仅被授予SELECT权限,缺少创建对象的权限。
授予临时表创建权限的方法
要让只读用户仅具备创建临时表的能力,无需授予全局或普通表的CREATE权限,只需针对PostgreSQL的临时表专用模式pg_temp授予权限即可,具体操作如下:
- 切换到目标数据库(替换为你的数据库名):
\c your_target_db
- 授予用户临时表模式的
CREATE权限(替换为你的只读用户名):
GRANT CREATE ON SCHEMA pg_temp TO your_readonly_user;
补充说明
- 创建临时表后,该用户作为临时表的创建者,默认拥有临时表的所有操作权限(
SELECT/INSERT/UPDATE/DELETE等),无需额外授权。 pg_temp是PostgreSQL的特殊模式,每个会话的临时表会自动放在专属的临时子模式中,授予pg_temp的权限会自动覆盖所有会话的临时模式,无需针对每个子模式单独授权。
内容的提问来源于stack exchange,提问作者Raju
相关产品推荐
相关产品推荐

