オブジェクト権限

テーブルやViewなどのオブジェクトを、postgresユーザ以外のユーザが使う為には、そのオブジェクトの権限をユーザに付ける必要がある。
権限にはいろいろあるが、主に使うのはselect, update, insert, deleteである。

1.オブジェクト権限の与え方

1.特定のDBユーザに対して権限を付与する

  1. Linuxサーバにpostgresでログイン
  2. psqlでデータベースに接続
  3. 権限を与える
    => grant select on テーブル名 to ユーザ名;

2.全てのDBユーザに対して権限を付与する

  1. Linuxサーバにpostgresでログイン
  2. psqlでデータベースに接続
  3. 権限を与える
    => grant select on テーブル名 to public;

2.publicの怪現象!?

例えばuser01,user02,user03というユーザがあり、

  1. 全てのユーザにselect権限を与える
  2. user01にはupdate, insert, delete権限も与える

という設定を行うとする。

=> grant select on テーブル名 to public;
=> grant update, insert, delete on テーブル名 to user01;

ところがこれだと何故かuser01はテーブルをselectすることができなかった。
そこでさらに

=> grant select on テーブル名 to user01;

と設定したところ、user01もselectできるようになった。
多分、publicの権限をオブジェクト単位で上書きしてしまうのだろう。皆さんも気をつけよう。(常識なのかなぁ・・・)


[ TOP ]