PostgreSQL では、スキーマとテーブルのレベルでデータテーブルを読み取り専用に制御することができます。通常、PostgreSQL を使用して読み取り専用ユーザーを作成し、適切な読み取り専用権限を付与することで実現します。
以下の手順を使用してください。
-- readonly_user ユーザーを作成し、パスワードを readonly_password に設定する
create user readonly_user with encrypted password 'readonly_password';
-- readonly_user ユーザーを読み取り専用トランザクションに設定する
alter user readonly_user set default_transaction_read_only=on;
-- readonly_user ユーザーにスキーマ "public" の usage 権限を付与する
grant usage on schema "public" to readonly_user;
-- "public" スキーマで新しく作成されるテーブルの読み取り権限を readonly_user ユーザーに付与する
alter default privileges in schema "public" grant select on tables to readonly_user;
-- readonly_user ユーザーに全てのテーブルの select 権限を付与する
grant select on all tables in schema "public" to readonly_user;
grant select on all sequences in schema "public" to readonly_user;
-- readonly_user ユーザーが指定したデータベースに接続できるようにする
grant connect on database splrp_dev to readonly_user;
注意:既存のデータテーブルを読み取り専用に設定する場合は、以下の手順を使用します。
-- readonly_user ユーザーにスキーマ "public" の usage 権限を付与する
grant usage on schema "public" to readonly_user;
-- readonly_user ユーザーに全てのテーブルの select 権限を付与する
grant select on all tables in schema "public" to readonly_user;
grant select on all sequences in schema "public" to readonly_user;
将来作成される新しいテーブルには、以下の手順を使用する必要があります。
-- "public" スキーマで新しく作成されるテーブルの読み取り権限を readonly_user ユーザーに付与する
alter default privileges in schema "public" grant select on tables to readonly_user;
これにより、将来作成されるテーブルも readonly_user に読み取り専用権限が付与されます。