類似の質問がたくさんありますが、私はpostgresのALTER、DROP、役割と権限について簡単なことはまだ理解できません。同じグループのユーザーが所有するALTER postgresテーブル
私は同じグループに属する複数のユーザーを持つDBを持っていたいと思います。ユーザーの1人がテーブルを作成すると、他のユーザーがテーブルを作成したかのように使用できるはずです。私はそれをある程度は機能させることができますが、ALTERとDROPは謎のままです。
例えば、ゼロから始める私は2人のユーザーとデータベースを作成する:
CREATE DATABASE test_db;
\c test_db
CREATE ROLE alice LOGIN INHERIT;
CREATE ROLE bjork LOGIN INHERIT;
そしてIはグループを作成してユーザーをグループに割り当てる:
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
テーブルを作成します。
bjork
は、書き込みも書き込みもできません。ALTER
、またDROP
:
\c - bjork
ALTER TABLE test_table ADD COLUMN column_b TEXT;
ERROR: must be owner of relation test_table
SET
「
set role scientists;
ALTER TABLE test_table ADD COLUMN column_b TEXT;
ERROR: must be owner of relation test_table
私は何をしないのです(INHERIT
ので、それはいけない)scientists
からROLE
はどちらか助けていないINGの? test_table
がalice
で、ALTER
がbjork
であることも可能ですか?
私は、あなたが(また)スキーマのpublic権限でデフォルトの権限を変更する必要があると思います;そうでなければ、新しく作成されたテーブルはデフォルトの権限を得ません。 –
なぜ、科学者たちは認可を得て、すべてのテーブルをそこに置く - すべての科学者はテーブルを変更する許可を得る。または、公開スキーマのデフォルトの権限を変更します。 – JustMe
@a_horse_with_no_name私は試しましたが(私は文を挿入した編集された質問を参照してください)、それはまだ動作していないようです。 – psarka