如何将管理员用户添加到现有的postgres数据库



我们有一个现有的postgres数据库gsrdb超级用户gsr一起生产。我们一直在和那个用户gsr一起做所有的数据库维护。此外,我们的应用程序服务使用同一用户gsr在数据库上执行事务。

我们现在想改变这一点。我们想要一个单独的超级用户gsr_admin(其凭据由Vault管理(,它可以进行dba维护,但我们的应用程序服务仍使用现有用户gsr

我面临的问题是,到目前为止,所有的数据库对象都归gsr用户所有,如果我以用户gsr_admin的身份在数据库上运行更新,无论是表约束还是序列,它都无法说出error: must be owner of relation...blah blah

我该怎么解决这个问题?

因此,我在考虑是否可以创建一个名为admin_group超级用户管理组角色,并将所有数据库对象的所有所有权从用户gsr重新分配给它,然后将用户gsrgsr_admin都更改为属于该管理组角色。这样,到目前为止创建的所有内容都将归角色admin_group所有吗?我是以用户gsr还是以gsr_admin的身份创建新对象,它们中的任何一个仍然可以更新对象?

我可能错了。非常感谢您的意见。

只需运行

ALTER ROLE gsr NOSUPERUSER;
ALTER ROLE gsr RENAME TO gsr_admin;  -- needs a new password now
CREATE ROLE gsr LOGIN;
GRANT USAGE ON SCHEMA myschema TO gsr;
GRANT SELECT, INSERT, UPDATE, DELETE
ON ALL TABLES IN SCHEMA myschema TO gsr;

类似地,授予序列上的USAGE和其他所需权限。您可能还想为将来的对象运行一些ALTER DEFAULT PRIVILEGES

最新更新