postgresql 同一组中的用户拥有的ALTER postgres表

btxsgosb  于 12个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(135)

有很多类似的问题,但我仍然无法理解一些简单的关于postgres的ALTER,DROP,角色和权限。
我希望有一个数据库,其中多个用户属于同一个组。当其中一个用户创建一个表时,其他用户应该能够像自己创建表一样使用它。我可以在某种程度上使它工作,但ALTER和DROP仍然是一个谜。
例如,我从头开始创建一个有两个用户的数据库:

CREATE DATABASE test_db;
\c test_db 

CREATE ROLE alice LOGIN INHERIT;
CREATE ROLE bjork LOGIN INHERIT;

字符串
然后我创建一个组并将用户分配到该组:

CREATE ROLE scientists;
GRANT scientists TO alice;
GRANT scientists TO bjork;
ALTER DEFAULT PRIVILEGES FOR ROLE alice GRANT ALL ON TABLES to scientists;
ALTER DEFAULT PRIVILEGES FOR ROLE bjork GRANT ALL ON TABLES to scientists;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES to scientists;


alice创建一个表:

\c - alice
CREATE TABLE test_table (column_a TEXT);


bjork可以读,写,但既不能ALTER,也不能DROP

\c - bjork 
ALTER TABLE test_table ADD COLUMN column_b TEXT;
ERROR:  must be owner of relation test_table


SET 'ing ROLE to scientists也没有帮助(它不应该,因为INHERIT

set role scientists;
ALTER TABLE test_table ADD COLUMN column_b TEXT;
ERROR:  must be owner of relation test_table


我错过了什么?有没有可能让alice拥有test_tableALTERbjork拥有?

fxnxkyjh

fxnxkyjh1#

您需要在创建表之前 * SET ROLE *,以便角色成为表的所有者。
只有表的所有者才能ALTER表。

相关问题