18.アクセス権の付与

■グループ管理
アクセス権をグループごとに付与する

CREATE GROUP [GroupName];
※グループ作成
ALTER GROUP [GroupName] ADD USER [UserName];
※グループへユーザー追加
ALTER GROUP [GroupName] DROP USER [UserName];
※グループからユーザー削除

■テーブル / ビュー / シーケンス
GRANT ALL ON [TableName] TO [GroupName];
GRANT SELECT,INSERT,UPDATE,DELETE,RULE,REFERENCES,TRIGGER ON [TableName1],[TableName2] TO [UserName];

権限剥奪
REVOKE ALL ON [TableName] FROM [GroupName];
REVOKE SELECT,INSERT,UPDATE,DELETE,RULE,REFERENCES,TRIGGER ON [TableName1],[TableName2] FROM [UserName];

■データベース
GRANT ALL ON DATABASE [DbName] TO [GroupName];
GRANT CREATE,TEMPORARY,TEMP DATABASE [DbName1],[DbName2] TO [UserName];

権限剥奪
REVOKE ALL ON DATABASE [DbName] FROM [GroupName];
REVOKE CREATE,TEMPORARY,TEMP DATABASE [DbName1],[DbName2] FROM [UserName];

■アクセス権の確認

テーブル / ビュー / シーケンス
\z

表示結果
[UserName1] =a*r*w*d*R*x*t*/[UserName2]

※もし、"="の左側か空の場合は、すべてのユーザー(PUBLIC)に対する権限
※[UserName2]によって[UserName1]に与えられた権限
※a=INSERT / r=SELECT / w=UPDATE / d=DELETE / R=CREATE RULE / x=外部キーの作成 / t=CREATE TRIGGER の権限がある
※*=直前の権限を付与できる

データベース
SELECT datname,datacl FROM pg_database;

表示結果

  datname  |                          datacl
-----------+----------------------------------------------------------
 test      | {=T/user1,user1=CT/user1,group1=CT/user1}
※T=一時テーブルの作成権限 / C=スキーマを作る権限
※上記の表示結果では、
user1によってすべてのユーザーにTの作成権限が与えられている
user1によってuser1にCT権限が与えられている
user1によってgroup1にCT権限が与えられている


戻る | CGI'sトップへ戻る