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

我正在维护一个数据库'db',其中大约有100个表。我有一个超级用户'A',并且'A'是所有表的所有者。如何在不继承“ A”的所有权限的情况下为特定于单个表的新用户“ B”授予“更改”权限。

我尝试提供Grant A to B;。此授予选项授予了从“ A”到“ B”的所有权限。我希望以上方案仅限于一个特定的表。 这可能吗?

a125000178 回答:PostgreSQL错误[42501]:错误:必须是关系表的所有者

The documentation最近获得了以下解释:

  

修改或销毁对象的权利是对象所有者的固有权利,本身不能授予或撤销。 (但是,与所有特权一样,该权利可以由拥有角色的成员继承;请参见Section 21.3。)

因此,唯一可以运行ALTER TABLE的人是:

  • 超级用户

  • 表所有者

  • 表所有者角色的成员

因此GRANT a TO b是赋予某人特权的唯一方法。

您也许可以使用属于SECURITY DEFINER的{​​{1}}函数,但是要小心。

本文链接:https://www.f2er.com/2949692.html

大家都在问