データベースをWeb上で操作する

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

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

  1. postgresユーザでログイン

    データベースに対しての操作を行うので、rootではなくpostgresユーザでログインする。

  2. データベースSampleDBに接続

    psqlSampleDBに接続する。

    # psql SampleDB

  3. 現在の権限の設定を確認する

    現在の権限の設定を確認する。\zコマンドを使用する。

    SampleDB=> \z
    Database    = SampleDB
     +-----------+--------------------------+
     | Relation  | Grant/Revoke Permissions |
     +-----------+--------------------------+
     | yubin_tab |                          |
     +-----------+--------------------------+
    SampleDB=>
    

    これにより、yubin_tabテーブルには何も権限がついてないことが分かる。

  4. 権限の設定

    nobodyユーザに、yubin_tabテーブルのselect権限を付ける。
    SQLコマンドのgrant命令を使用する。

    SampleDB=> grant select on yubin_tab to nobody;
    CHANGE

    権限の設定が変更されると、CHANGEと表示される。正しく設定されたかどうかを 確認する。

    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命令でそれぞれの権限を付加する。

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

SampleDB=> revoke select on yubin_tab from nobody;

grant命令とは違い、tofromに変わっていることに注意しよう。

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