PostgreSQL:如何为只读用户单Schema扩展增删改查权限?
解决方案
核心问题说明
你之前执行的ALTER DEFAULT PRIVILEGES仅对后续在该Schema中创建的表生效,而且没有授予Schema本身的CREATE权限(要在Schema里创建对象必须拥有这个权限),同时也没覆盖已存在的表的权限,所以看起来没效果。
分步执行语句
- 先授予目标Schema的
CREATE权限,允许用户在该Schema下创建对象:
GRANT CREATE ON SCHEMA schema_name TO user_rd;
- 给该Schema下已存在的所有表授予
INSERT、UPDATE、SELECT权限:
GRANT INSERT, UPDATE, SELECT ON ALL TABLES IN SCHEMA schema_name TO user_rd;
- 设置默认权限,确保未来在该Schema创建的新表自动获得这些权限:
ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT INSERT, UPDATE, SELECT ON TABLES TO user_rd;
额外提示
如果你的表用到自增字段(依赖序列对象),可以补充执行以下语句赋予序列操作权限:
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA schema_name TO user_rd; ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT USAGE, SELECT ON SEQUENCES TO user_rd;
内容的提问来源于stack exchange,提问作者Raju
相关产品推荐
相关产品推荐

