1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【忙しい人向け】新しいユーザーに、postgresのテーブルのCRUD権限を一括で与える手法。

Last updated at Posted at 2019-02-08

PostgreSQLでは、作業中のデータベースのテーブル名一覧を、

SELECT tablename FROM pg_tables;

で取得できる。

ということは、文字列メソッド組み合わせると、テーブルのCRUD権限を与えるSQLを作ることができる。
こりゃ便利! 

....って、postgresのテーブルの所有者を一括で変更するのパクリなんだけど、忙しい人はそのままコピペしたいだろうから、自分の備忘録を兼ねて貼っておく。

新しいユーザーに、postgresのテーブルのCRUD権限を一括で与える

以下、新ユーザー名は「shinjin」とする。
新人にSELECT , INSERT , UPDATE , DELETE権限全てを与えたい場合には、

make_grant_shinjin.sql
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;

おしまい。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?