データベースをWeb上で操作するための準備

作成したデータベースのテーブルをWeb上で見るためには、Apacheのデフォルトユーザであるnobodyをデータベースに登録し、テーブルを操作する権限を与える必要がある。

1.権限の与え方

例えばyubin_tabテーブルの参照(Select)権を与えるには次のように行う。

1.postgresユーザでログイン
データベースに対しての操作を行うので、rootではなくpostgresユーザでログインする。
2.nobodyユーザの登録
nobodyユーザをデータベースに登録する。
# createuser nobody
3.データベースSampleDBに接続
psqlでSampleDBに接続する。
# psql SampleDB
4.現在の権限の設定を確認する
現在の権限の設定を確認する。\zコマンドを使用する。
SampleDB=> \z
Database    = SampleDB
 +-----------+--------------------------+
 | Relation  | Grant/Revoke Permissions |
 +-----------+--------------------------+
 | yubin_tab |                          |
 +-----------+--------------------------+
SampleDB=>
これにより、yubin_tabテーブルには何も権限がついてないことが分かる。
5.権限の設定
nobodyユーザに、yubin_tabテーブルのselect権限を付与する。SQLコマンドのgrant命令を使用する。
SampleDB=> grant select on yubin_tab to nobody;
CHANGE ←権限が変更された
6.確認
正しく設定されたかどうかを確認する。
SampleDB=> \z
Database    = SampleDB
 +-----------+--------------------------+
 | Relation  | Grant/Revoke Permissions |
 +-----------+--------------------------+
 | yubin_tab | {"=","nobody=r"}         |
 +-----------+--------------------------+
SampleDB=>
これにより、nobodyユーザにr(select)権限が付加されたことが分かる。

上記の設定により、Web上からyubin_tabテーブルを参照することが可能になる。
PHPでテーブルの参照を行うプログラムを作って確認しよう。作り方は別のページで解説する。

当然、select権限しか与えていないため、Web上からは追加(insert)や削除(delete)はできない。それらを行いたい場合は、同じようにgrant命令でそれぞれの権限を付加する。

2.権限を取り消す

付加した権限をはずしたい場合は、revoke命令を使用する。例えば「nobodyユーザからyubin_tabテーブルのselect権限を取り消す」には、次のように行う。

SampleDB=> revoke select on yubin_tab from nobody;

※grant命令とは違い、「to」が「from」に変わっていることに注意!!

3.余談

これで、Active Server Pageを作成する準備が整った。あとはPHPを設定すれば、晴れてWebDBシステムが開発できるようになる。


[ TOP ]