【发布时间】:2020-02-20 23:50:02
【问题描述】:
我们有一个现有的 postgres 数据库 gsrdb 正在生产中,superuser gsr。我们一直在使用该用户 gsr 进行所有数据库维护。此外,我们的应用服务使用同一用户 gsr 对数据库进行事务处理。
我们现在想改变这一点。我们需要一个单独的超级用户 gsr_admin(其凭据由 Vault 管理)可以进行 dba 维护,但我们的应用服务仍然使用现有用户 gsr。
我面临的问题是,到目前为止,所有数据库对象都归 gsr 用户所有,如果我以用户 gsr_admin 的身份在数据库 w.r.t. 上运行更新。无论是表约束还是序列,它都会失败说error: must be owner of relation...blah blah
我该如何解决这个问题?
所以我在想是否可以创建一个名为admin_group 的超级用户管理员组角色,并将所有数据库对象的所有所有权从用户gsr 重新分配给它,然后更改两个用户@ 987654332@ 和 gsr_admin 属于此管理员组角色。这样一来,到目前为止创建的所有内容都将由角色 admin_group 拥有吗?我是否以用户gsr 或gsr_admin 的身份创建新对象,它们中的任何一个仍然可以更新对象?
我可能错了。非常感谢您的意见。
【问题讨论】:
-
我想我可以通过创建
superuser admin role说proxy_admin来做到这一点。然后我将所有数据库对象的所有权更改为proxy_admin,然后每当gsr或gsr_admin登录时,我将角色设置为proxy_admin。我不知道该怎么做。希望能提供一些意见。