ファイヤープロジェクト
GRANTとREVOKE
2003-07-20T15:13+09:00   matsu
テーブル毎にユーザのアクセス権を設定できる.アクセス権を与えるのが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
また,対象にはユーザ名かグループ名かPUBLICをいれる.実際にやってみる.
=> 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
=の左が空になっているのは,PUBLICを意味している.
アクセス権を奪うには以下のようにする.
REVOKE アクセスの種類 ON テーブル名 FROM 対象;
詳細はGRANTと同様.
グループを使用できると,アクセス権の管理が楽になるかもしれない.以下のようにしてグループを作成する.
CREATE GROUP グループ名;
そしてグループのメンバーは以下のようにして追加する.
ALTER GROUP グループ名 ADD USER ユーザ名;
グループからメンバーを外すには以下のようにする.
ALTER GROUP グループ名 DROP USER ユーザ名;
グループは以下のようにして消す.
DEOP GROUP グループ名;
matsu(C)
Since 2002
Mail to matsu