最近、サーバーの1人のユーザーと定期的なアクセス権を共有したいと思っていましたが、単純なCREATE USER
およびGRANT ALL ON DATABASE
コマンドでは、データに対して単純なSELECT
を実行できませんでした。
特定のデータベースのすべてのテーブルへの権限を特定のユーザーに付与したいのですが、スキーマ全体へのアクセスを許可するのが最善の方法かどうかはわかりませんpublic
ある種の特権の昇格を許可します。他に方法はありますか?
DATABASE
に対する特権は、データベースへの一般的な接続権限のみを付与し、それ以上は付与しません。その特権だけを持つユーザーは、一般の人が見ることを許可されているものだけを見ることができます。
すべてのテーブルへの読み取りアクセスを許可するには、すべてのスキーマとテーブルに対する権限も必要です。
GRANT USAGE ON SCHEMA public TO myuser; -- more schemas?
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;
futureスキーマとテーブルにデフォルトの権限を設定することもできます。データベースにオブジェクトを作成するすべてのロールに対して実行します
ALTER DEFAULT PRIVILEGES FOR ROLE mycreating_user IN SCHEMA public
GRANT SELECT ON TABLES TO myuser;
ただし、実際には コンセプト全体を理解する を最初に行う必要があります。
そして、ほとんどの場合、グループロールに特権をバンドルしてから、グループロールをユーザーロールに/ユーザーロールから付与/取り消しする方が適切です。関連: