既存すべての特権を設定するための省略形を見つけました 指定されたスキーマのテーブル。マニュアルは次のことを明確にしています:
(ただし、
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スクリプトをコピーするときに手動で句を指定します。