既存すべての特権を設定するための省略形を見つけました 指定されたスキーマのテーブル。マニュアルは次のことを明確にしています:
(ただし、
ALL TABLES
ビューが含まれていると見なされます および外部テーブル 。
大胆な強調鉱山。 serial
列はnextval()
で実装されます 列のデフォルトとしてのシーケンスで、マニュアルを引用します:
シーケンスの場合、この特権により
currval
を使用できます およびnextval
機能。
したがって、serial
がある場合 列には、 USAGE
も付与する必要があります (またはALL PRIVILEGES
)シーケンス
GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;
注:Postgres 10以降のID列は、追加の権限を必要としない暗黙のシーケンスを使用します。 (serial
のアップグレードを検討してください 列。)
新しいはどうですか オブジェクト?
DEFAULT PRIVILEGES
にも興味があります ユーザーまたはスキーマの場合:
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT ALL PRIVILEGES ON TABLES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT USAGE ON SEQUENCES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo REVOKE ...;
これにより、将来作成されるオブジェクトの特権が自動的に設定されますが、既存のオブジェクトの特権は設定されません。
デフォルトの権限はのみです ターゲットユーザーによって作成されたオブジェクトに適用されます(FOR ROLE my_creating_role
)。その句を省略すると、デフォルトで現在のユーザーがALTER DEFAULT PRIVILEGES
を実行します。 。明確にするために:
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo GRANT ...;
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo REVOKE ...;
pgAdmin IIIのすべてのバージョンには、微妙なバグと表示があることにも注意してください。 現在の役割に適用されない場合でも、SQLペインのデフォルトの特権。必ずFOR ROLE
を調整してください SQLスクリプトをコピーするときに手動で句を指定します。