创建多个用户,互相拥有所有权限relations/objects

Create multiple users, to have all privileges on each others relations/objects

我使用 postgres 用户登录(顺便说一句,这不是超级用户,数据库托管在 google 云上)。

我需要创建多个用户,并且所有用户都可以访问彼此的对象

因此,我使用 postgres 用户创建了 2 个用户,例如:

CREATE USER postgres_subuser1  PASSWORD 'some_password';
GRANT postgres TO postgres_subuser1;

CREATE USER postgres_subuser2  PASSWORD 'some_password';
GRANT postgres TO postgres_subuser2;

然后我使用“postgres_subuser1”登录并创建了 table table1

然后我用“postgres_subuser2”登录,并尝试插入 table1,但错误

permission denied for table table1出现

当我尝试使用“postgres”用户插入时,甚至会发生这种情况,只有 table 所有者“postgres_subuser1”可以插入 table。

问题:如何管理当前用户创建的所有用户对彼此的对象拥有所有权限?

您可以alter the default privileges为这些用户创建的对象授予彼此访问权限:

ALTER DEFAULT PRIVILEGES FOR ROLE postgres_subuser1 GRANT ALL PRIVILEGES ON TABLES TO postgres_subuser2;
ALTER DEFAULT PRIVILEGES FOR ROLE postgres_subuser2 GRANT ALL PRIVILEGES ON TABLES TO postgres_subuser1;

此外,我认为您的 GRANT postgres TO postgres_subuser2; 倒退了,您肯定是要授予 postgres 用户更改为 postgres_subuser2 角色的权限,而不是相反?