You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 13中ALTER DEFAULT PRIVILEGES不生效问题求助

问题原因与解决方案

你的问题核心是ALTER DEFAULT PRIVILEGES的角色指定错误:

你执行的语句是针对read_role设置默认权限:

ALTER DEFAULT PRIVILEGES FOR ROLE read_role IN SCHEMA lab GRANT SELECT ON TABLES TO read_role; 

这条语句的作用是:当read_role角色创建表时,自动给read_role赋予该表的SELECT权限。但你实际是用postgres角色创建的emp2,所以这条默认权限规则根本不会触发。

正确的解决步骤

  1. 针对**创建表的角色(这里是postgres)**设置默认权限:
ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA lab GRANT SELECT ON TABLES TO read_role;

这条语句的含义是:只要postgres在lab模式下创建新表,就自动把该表的SELECT权限授予read_role。

  1. 验证效果:
    • 用postgres角色创建新表(比如emp3)
    • 切换到test用户执行select * from emp3,此时应该能正常查询,不会再出现权限错误。

补充说明

如果后续还有其他角色需要在lab模式下创建表,需要给对应的角色也设置默认权限。比如如果有dev_role也会创建表,执行:

ALTER DEFAULT PRIVILEGES FOR ROLE dev_role IN SCHEMA lab GRANT SELECT ON TABLES TO read_role;

内容的提问来源于stack exchange,提问作者user2599851

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 15:52:06