我希望PostgreSQL中的用户对某个数据库对象具有权限,以便他/她可以更改它(例如:向表中添加列)。但是,我相信只有当用户是对象的所有者或者他从所有者那里继承了权限时,这才是可能的。这就是问题所在,因为我希望该用户对特定对象具有权限,因为如果我继承了所有者的权限,他/她将能够更改我不希望他/她更改的对象。在这种情况下你建议怎么做?
我希望PostgreSQL中的用户对某个数据库对象具有权限,以便他/她可以更改它(例如:向表中添加列)。但是,我相信只有当用户是对象的所有者或者他从所有者那里继承了权限时,这才是可能的。这就是问题所在,因为我希望该用户对特定对象具有权限,因为如果我继承了所有者的权限,他/她将能够更改我不希望他/她更改的对象。在这种情况下你建议怎么做?
1条答案
按热度按时间wrrgggsh1#
PostgreSQL documentation的当前版本(v15)说道:
修改或销毁对象的权利是作为对象的所有者所固有的,并且本身不能被授予或撤销。(但是,与所有特权一样,该权限可以由拥有角色的成员继承;参见第22.3节。)
因此,只有作为表的所有者或拥有该表的角色的成员的用户才能更改表的结构。要使表
my_table
可由多个用户修改,请创建一个角色owner_of_my_table
,并使所需的用户成为其成员。您可以拥有任意多个所有者组,这样就可以使表A
可由一组用户修改,而表B
可由另一组用户修改。