基本的にテーブルなどのオブジェクトは作成したユーザーが所有ユーザーとなる。
作成直後は所有ユーザー以外、そのオブジェクトを操作する権限がない。
GRANTは権限を与え、REVOKEは権限を奪う構文である。
GRANT 操作名 ON テーブル名 TO ユーザー名;
REVOKE 操作名 ON テーブル名 FROM ユーザー名;
画面① | 画面② |
---|---|
> 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できなくなった。
|