序
PostgreSQLでは、作業中のデータベースのテーブル名一覧を、
SELECT tablename FROM pg_tables;
で取得できる。
ということは、文字列メソッド組み合わせると、テーブルのCRUD権限を与えるSQLを作ることができる。
こりゃ便利!
....って、postgresのテーブルの所有者を一括で変更するのパクリなんだけど、忙しい人はそのままコピペしたいだろうから、自分の備忘録を兼ねて貼っておく。
新しいユーザーに、postgresのテーブルのCRUD権限を一括で与える
以下、新ユーザー名は「shinjin」とする。
新人にSELECT , INSERT , UPDATE , DELETE権限全てを与えたい場合には、
SELECT
'GRANT SELECT , INSERT , UPDATE , DELETE ON ' || tablename || ' TO shinjin;'
FROM pg_tables;
とする。
後は、
psql -U 現ユーザー名 -h 接続先 -p ポート -d データベース名 -f "./make_grant_shinjin.sql" -A -F, > ./grant_shinjin.sql
などとして実行して生成されたgrant_shinjin.sqlを(適宜編集の上)psqlに流し込んでいく。
あとは、スキーマのUSAGE権限を付与しよう。
ユーザは、デフォルトでは所有していないスキーマのオブジェクトをアクセスすることはできません。 アクセスするためには、そのスキーマの所有者からスキーマのUSAGE権限を付与してもらわなければなりません。
https://www.postgresql.jp/document/8.4/html/ddl-schemas.html#DDL-SCHEMAS-PRIV
-- 例
GRANT USAGE ON SCHEMA public TO shinjin;
おしまい。