データベースは誰でもが書き込んだり、誰でもが閲覧できる必要は必ずしもない。 例えば、アルバイト店員が、時給を自由に設定できたり、 学生が他の学生の成績を閲覧できたりするようなシステムは、 データベースサーバとしてはよくない。
アクセスを制限する場合、アクセスするユーザを認可することによって可能 になる。アクセスの認可は GRANT、取り消しは REVOKE を使用する。 ここでは GRANT を練習する。
この講義の受講者は guest アカウントで SELECT が可能になるようなデータベースにしよう。
ta05001=> GRANT SELECT ON practice TO guest;
guest アカウントで自分のデータベースに guest アカウントで入るには、
ta05001=# \c - guest;
隣の学生の作成したデータベースに入ってみよう。-U で guest アカウント、 また隣の学生の作成したデータベースを指定しよう。同じ操作ができるか確認しよう。
% psql -U guest c10XXXX
まずは表をのぞいてみよう。
ta05001=> select * from practice;
ERROR: permission denied for relation practice
guest アカウントには何も許可をしていないため、 表にアクセスすることができない。SELECT だけを許可しよう。
ta05001=# GRANT SELECT ON practice TO guest;
GRANT
guest アカウントにより、select ができることを確認しよう。
ta05001=# \c - ta05001;
You are now connected to database "ta05001" as user "ta05001".
ta05001=> select * from practice;
西村まどか | 月 | 4 | 前期 | 公益自由研究 | 102
西村まどか | 月 | 5 | 通年 | 専門演習I | 102
西村まどか | 月 | 6 | 前期 | 専門演習II | 102
西村まどか | 火 | 1 | 前期 | 基礎プログラミングIB | 101
西村まどか | 火 | 2 | 前期 | 基礎プログラミングIC | 101
西村まどか | 水 | 1 | 前期 | 情報交換概論 | 102
西村まどか | 火 | 1 | 後期 | 基礎プログラミングII | 101
西村まどか | 火 | 2 | 後期 | 基礎プログラミングII | 101
西村まどか | 水 | 2 | 後期 | 基礎の自然科学(物理) | 102
guest は UPDATE ができないことを確かめよ
アクセスを停止するには REVOKE を使う。
データを削除させないよう設定するには次のとおり。
ta05001=> REVOKE DELETE ON practice FROM ta05yyy;
書き換えもできないようにするためにはどのようにしたらよいか。