我正在维护一个数据库'db',其中大约有100个表。我有一个超级用户'A',并且'A'是所有表的所有者。如何在不继承“ A”的所有权限的情况下为特定于单个表的新用户“ B”授予“更改”权限。
我尝试提供Grant A to B;
。此授予选项授予了从“ A”到“ B”的所有权限。我希望以上方案仅限于一个特定的表。
这可能吗?
我正在维护一个数据库'db',其中大约有100个表。我有一个超级用户'A',并且'A'是所有表的所有者。如何在不继承“ A”的所有权限的情况下为特定于单个表的新用户“ B”授予“更改”权限。
我尝试提供Grant A to B;
。此授予选项授予了从“ A”到“ B”的所有权限。我希望以上方案仅限于一个特定的表。
这可能吗?
The documentation最近获得了以下解释:
修改或销毁对象的权利是对象所有者的固有权利,本身不能授予或撤销。 (但是,与所有特权一样,该权利可以由拥有角色的成员继承;请参见Section 21.3。)
因此,唯一可以运行ALTER TABLE
的人是:
超级用户
表所有者
表所有者角色的成员
因此GRANT a TO b
是赋予某人特权的唯一方法。
您也许可以使用属于SECURITY DEFINER
的{{1}}函数,但是要小心。