GRANT,REVOKE

基本的にテーブルなどのオブジェクトは作成したユーザーが所有ユーザーとなる。
作成直後は所有ユーザー以外、そのオブジェクトを操作する権限がない。
GRANTは権限を与え、REVOKEは権限を奪う構文である。

GRANT 操作名 ON テーブル名 TO ユーザー名;
REVOKE 操作名 ON テーブル名 FROM ユーザー名;

以降、2画面から操作

画面①画面②
> psql oddtbs postgres
Password for user postgres: himitu
Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
...

oddtbs=# create user foo password 'himitu';
CREATE ROLE
oddtbs=# \c - foo
Password for user foo: himitu
You are now connected to database "oddtbs" as user "foo".
oddtbs=> select * from tmp1;
ERROR:  permission denied for relation tmp1

※ tmp1の所有ユーザーでないためSELECTできない。
oddtbs=> grant select on tmp1 to foo;
GRANT

※ tmp1をSELECTする権限をfooユーザーに与えた。
oddtbs=> select * from tmp1;
  code  |   name   |   tel
--------+----------+---------
 564001 | 鈴木義男 | 11-1111
 564002 | 斎藤洋子 | 22-2222
 564003 | 山田美樹 | 33-3333
 564004 | 田中秀明 | 44-4444
 564005 | 佐藤研一 | 55-5555
 564006 | 相原佳子 | 66-6666
 564007 | 小林律子 | 77-7777
 564008 | 吉田隆士 | 88-8888
(8 rows)

※ SELECTできた。
oddtbs=> revoke select on tmp1 from foo;
REVOKE

※ tmp1をSELECTする権限をfooユーザーから奪った。
oddtbs=> select * from tmp1;
ERROR:  permission denied for relation tmp1

※ 再びSELECTできなくなった。