ここでは管理下にある Linux サーバにおいて PostgreSQL Server とブラウザ経由で PostgreSQL データベースを管理するための phpPgAdmin のセットアップについて説明しています。
こで紹介している環境は CentOS-4.5 / PostgreSQL-7.4.17 / PHP-4.3.9 になります。RHEL系Linux であれば phpPgAdmin 以外のパッケージは用意されています。
CentOS-4.5 の PostgreSQL パッケージは 7.4.17 となっています。2007年4月にリリースされた CentOS-5 では、PostgreSQL-8.1.4 となっています。バージョンにあったドキュメントを参照して下さい。
参照 => PostgreSQL日本語ドキュメント
本稿で説明している PostgreSQL データベースサーバの運用ポリシは以下の通りです。
本稿で構築する PostgreSQL データベースサーバのポリシはサーバー管理者がユーザーの要求に応じて必要なアカウントとデータベースを提供する事を前提とします。(LDAP認証は想定していません)つまり アカウントは PostgreSQL サーバ内での管理を想定しています。
管理者がクライアントの要求に応じて、PostgreSQLデータベース・アカウントを発行します。データベース作成権限を与えるか否かは用途に応じて適宜判断します。
クライアントに対してはリモートCUI の提供は行わないため、何らかの方法でバックアップ等の操作手段を提供する必要があります。クライアントにはブラウザ経由で管理が行えるphpPgAdminによるインターフェイスを提供します。
SSL による通信経路の暗号化を前提にしています。
PostgreSQL への接続制限は例外なく暗号化パスワードによる認証を求めるようにします。後述しますが、TRUST / IDENT 認証は利用しない方向でセットアップします。
本稿では触れていませんが格納する情報によって厳格なセキュリティポリシが求められます。ファイアウォールで特定のクライアントのみに接続を許可する、データベースサーバは専用サーバで要塞化するといった総合的な対策も必要になります。
必要なパッケージをインストールします。root権限で行ないます。CentOS-4.5 でパッケージ管理ツールでセットアップを行う場合、PostgreSQL実行ユーザーや起動スクリプト等、全て自動的にセッティングされます。
でパッケージがインストールされていなければインストールしておきます。
依存関係により postgresql-7.4.17-1.RHEL4.1 postgresql-libs-7.4.17-1.RHEL4.1 postgresql-server-7.4.17-1.RHEL4.1 がインストールされます。 用途によっては以下のパッケージも必要になります。
postgresql-devel / postgresql-client
CentOS-4.5 のパッケージでは、PostgreSQL サーバーを起動しても外部からの接続は出来ないように設定されています。
で起動しておきます。
CentOS-4.5 の初期設定では起動時にデータベースにスーパーユーザ権限でアクセスされないようになっていましたが、起動する前に最低限必要なセキュリティに関する設定を行なっておきます。
CentOS-4.5 のパッケージをインストールした場合、自動的にUnixアカウント postgres が作成されます。 postgres ユーザーにパスワードを設定しておきます。(root権限で)
続いてPostgreSQL 内で管理するスーパーユーザー postgres にパスワードを設定します。こちらは先ほどの Unix アカウントとは異なります。
インストール時に事前に用意されているデータベース template1 にpsql コマンドで接続します。(psql の実行は必ずデータベースに接続する必要がある) また、# はスーパーユーザー権限でデータベースに接続していることを示します。
で存在するデータベースを確認できます。無ければ作成する必要があります。いずれにしてもメンテナンス用に空のデータベースは必要になるので用意されていると思います。
引き続き、PostgreSQL Server の設定を行います。