PostgreSQL 用户权限

bsh*_*der 1 postgresql permissions

我有一个 PostgreSQL 9.3 数据库,带有支持 Web 应用程序和 GeoServer 的 PostGIS 扩展。我创建了三个用户。

用于访问参考数据模式中的数据的只读用户。

用于访问和更新保存应用程序状态的架构中的数据的读/写用户。

GeoServer 正在访问的地图数据的读/写/创建用户。

前两个工作正常。第三个我有问题。以用户 GeoServer 身份登录可以创建新表就好了。但随后无法读取它们。我必须专门进入并手动应用权限。这对于应用程序来说是站不住脚的。用户可以创建一个他们无法读取的表对我来说没有多大意义。所以我认为我错过了一个不明显的权限设置。我的谷歌搜索让我得到了大量关于设置只读用户的奇怪说明,但不是为了这个。

Erw*_*ter 5

这应该工作(作为超级用户):

CREATE ROLE rwc;    -- read/write/create user
CREATE SCHEMA foo;
ALTER  SCHEMA foo OWNER TO rwc;
-- GRANT ALL ON SCHEMA foo TO rwc;  -- alternatively

CREATE ROLE r;      -- read user
GRANT USAGE ON SCHEMA foo TO r;

CREATE ROLE rw;     -- read/write user

GRANT r TO rw;
GRANT rw TO rwc;

ALTER DEFAULT PRIVILEGES FOR ROLE rwc IN SCHEMA foo GRANT SELECT ON TABLES TO r;
ALTER DEFAULT PRIVILEGES FOR ROLE rwc IN SCHEMA foo GRANT USAGE ON SEQUENCES TO r;

ALTER DEFAULT PRIVILEGES FOR ROLE rwc IN SCHEMA foo
GRANT INSERT, UPDATE, DELETE ON TABLES TO rw;
ALTER DEFAULT PRIVILEGES FOR ROLE rwc IN SCHEMA foo
GRANT SELECT, UPDATE ON SEQUENCES TO rw;
Run Code Online (Sandbox Code Playgroud)

您可能错过了这些步骤之一。
您可能需要额外调整现有对象,因为默认权限仅授予新对象。