テーブルやViewなどのオブジェクトを、postgresユーザ以外のユーザが使う為には、そのオブジェクトの権限をユーザに付ける必要がある。
権限にはいろいろあるが、主に使うのはselect, update, insert, deleteである。
1.特定のDBユーザに対して権限を付与する
- Linuxサーバにpostgresでログイン
- psqlでデータベースに接続
- 権限を与える
=> grant select on テーブル名 to ユーザ名; 2.全てのDBユーザに対して権限を付与する
- Linuxサーバにpostgresでログイン
- psqlでデータベースに接続
- 権限を与える
=> grant select on テーブル名 to public;
例えばuser01,user02,user03というユーザがあり、
- 全てのユーザにselect権限を与える
- 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の権限をオブジェクト単位で上書きしてしまうのだろう。皆さんも気をつけよう。(常識なのかなぁ・・・)