PostgreSQL错误 [42501]: 错误:必须是表 table 的所有者

4

我正在维护一个名为“db”的数据库,其中大约有100个表。我有一个超级用户“A”,而“A”是所有表的所有者。如何给新用户“B”针对单个表的Alter权限,而不继承来自“A”的所有权限。

我尝试通过提供Grant A to B;来实现。这种授权选项将'A'的所有权限授予了'B'。我希望上述情况限制在一个特定的表中。

是否可能实现以上需求?

1个回答

4

该文档最近提供了以下解释:

修改或删除对象的权利是拥有者固有的权利,无法单独授予或撤销。(但是,像所有特权一样,这个权利可以被拥有角色的成员继承;请参见第21.3节)。

所以只有以下人员才能运行 ALTER TABLE

  • 超级用户

  • 表的所有者

  • 表所有者角色的成员

因此,GRANT a TO b 是赋予某人权限的唯一方式。

您可能能够使用属于 aSECURITY DEFINER 函数,但要小心使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,