GRANTとREVOKE
テーブル毎にユーザのアクセス権を設定できる.アクセス権を与えるのがGRANTで奪うのがREVOKEである.
まずテーブルを作ってみる.
=> CREATE TABLE table1 (id INTEGER); CREATEで
\zでアクセス権を確認してみる.
=> \z Access privileges for database "firstdb" Table | Access privileges --------+------------------- table1 | (1 row)アクセス権を与えるには,以下のようにする.
GRANT アクセスの種類 ON テーブル名 TO 対象;アクセス権には以下がある.
- ALL
- SELECT
- INSERT
- UPDATE
- DELETE
- RULE
=> GRANT SELECT ON table1 TO dbuser;
=> \z
Access privileges for database "firstdb"
Table | Access privileges
--------+-------------------
table1 | {=,dbuser=r}
(1 row)
\zによる表示は
{ユーザ名=アクセス権,ユーザ名=アクセス権,ユーザ名=アクセス権,ユーザ名=アクセス権,.....}
となっている.アクセス権は以下のように表示される.
- r
- SELECT
- a
- INSERT
- w
- UPDATE/DELETE
- R
- RULE
アクセス権を奪うには以下のようにする.
REVOKE アクセスの種類 ON テーブル名 FROM 対象;詳細はGRANTと同様.
グループを使用できると,アクセス権の管理が楽になるかもしれない.以下のようにしてグループを作成する.
CREATE GROUP グループ名;そしてグループのメンバーは以下のようにして追加する.
ALTER GROUP グループ名 ADD USER ユーザ名;グループからメンバーを外すには以下のようにする.
ALTER GROUP グループ名 DROP USER ユーザ名;グループは以下のようにして消す.
DEOP GROUP グループ名;

