最近,PostgreSQL専用のGUI管理ツールが相次いでリリースされた。今回は,これらの管理ツール3本を紹介する。

 それぞれに特徴があるので,必要に応じて気に入ったものを利用すると良いだろう。今回ご紹介するツールはどれもLinuxで稼働するとともに,PostgreSQLの最新安定版7.3に対応している。もちろん日本語も問題なく使えるようになっていて実用性は高い。

 本稿で解説するのはこの3本である。

(1)pgAdminIII(http://www.pgadmin.org/pgadmin3/)
(2)phpPgAdmin(http://phppgadmin.sourceforge.net)
(3)PowerGres Administrator Tool(http://powergres.sra.co.jp)

 (1)はクライアント/サーバー方式で実装されており,動作環境としてはX WindowSystemとGtk2などが必要である。(2),(3)はどちらもPHPで実装されたWebアプリケーションである。

 では,順番にこれらのツールを見ていこう。

ほとんどのPostgreSQLオブジェクトが操作できるpgAdminIII

写真1●pgAdminIII 言語選択画面
写真2●pgAdminIII 初期画面
写真3●pgAdminIII サーバー接続画面
写真4●pgAdminIII サーバー接続成功画面
写真5●pgAdminIII テーブル作成画面(1)
写真6●pgAdminIII テーブル作成画面(2)
写真7●pgAdminIII テーブル作成画面(3)
 pgAdminはもともとWindows環境用に開発されたPostgreSQL専用の管理ツールだが,9月27日にリリースされたpgAdminIII 1.0.0から,LinuxなどのUnix系のプラットフォームにも移植されている。非常に機能が多く,また今回ご紹介するツールの中ではおそらく最も知名度が高い。最新版のpgAdminIIIはPostgreSQL7.3だけでなく,7.4にも対応している。

 pgAdminIIIのライセンスはArtistic Licensetと呼ばれるオープンソースのライセンスの一種で,一定の条件のもとにソースコードの変更や,販売が許されている。詳細はソースに付属するLICENSE.txtというファイルを見てほしい。

 pgAdminIIIではWindowsに加え,Linuxもサポートされた。pgAdminIIIをLinuxで動かすためには,X Window SystemとGtk2に加え,wXWindowsというツールキットが必要になるが,pgAdminIIIのページでpgAdminIIIで検証されたwXWindowsが提供されている。

 筆者の常用環境はVine Linux 2.6だが,残念ながらGtk2がサポートされていない。もちろんソースからコンパイルするなどすればGtk2をインストールできないこともないのだが,芋蔓式に他のライブラリが必要になり,かなり面倒なことになること,Gtkとの共存が難しいことなどからVineで利用はあきらめ,Red Hat Linux 9をVMWare経由でインストールしてその上でpgAdminIIIを使うことにした。

 インストールは簡単だ。pgAdminIIIのサイトにRed Hat 9用のRPMがpgadmin3-1.0.0-1.i386.rpmというファイル名で用意されているので,それを入れるだけである。また,Red Hat 9にはPostgreSQL 7.3用のRPMも用意されているので,それを使えば簡単にpgAdminIIIが動作する環境が構築できる。

 注意すべき点としては,

・initdbのオプションに必ず --no-locale を付けること
・postgresql.confのtcpip_socketをtrueにしておくこと

があげられる。最初のポイントはpgAdminIIIを使う場合に限らず,PostgreSQLで日本語を使う際に忘れてはならないことである。これを怠ると検索結果が不正であるとか,いろいろな問題に悩まされることになる。

 2番目のポイントは,pgAdminIIIがUnix domainソケットでの接続ができないという制限事項から来る注意点である。

 pgAdminIIIの起動は非常に簡単で,単に

$ pgadmin3
とするだけである。その際,
Xlib: extension "RENDER" missing on display "192.168.37.1:0.0"
のようなエラーメッセージが表示されるが,pgAdminIIIの動作自体には支障がないようなので,とりあえず無視することにする。

 無事に起動すると,初回だけ言語選択画面(写真1[拡大表示])が表示されるので,ここでは日本語を選択しておこう。この後「今日の秘訣」画面がなにかしらアドバイスを表示してくれるが,うっとうしい場合には「スタート時に秘訣を表示する」のチェックを外しておけば,次回からは「今日の秘訣」は表示されなくなる。

 写真2[拡大表示]がgAdminIIIの初期画面だが,このままではまだ何もできない。pgAdminIIIではすべての作業に先立って,データベースに接続する必要がある。そのためには,「ファイル」メニューから「サーバーの追加」を選び,必要な項目を入力する(写真3[拡大表示])。そうすると,左側の画面に今設定したデータベースへの接続が表示され,いろいろな操作ができるようになる(写真4[拡大表示])。

 pgAdminIIIでは,データベースやテーブルの作成を含め,ほとんどのPostgreSQLのオブジェクトがGUIから操作できるようになっている。詳細は/usr/share/pgadmin3/docs/en_USにあるHTML形式のドキュメントを見てほしい。

 PostgreSQLのデータベース中のオブジェクトはデータベース->スキーマ->テーブルという階層で構成されている。pgAdminIIIでは左側のメニューをクリックすることにより,次々にこの階層を辿ることができる。

 pgAdminIII機能の例としてテーブルの定義機能を見てみよう。

 まず左側のメニューの「スキーマ」を展開し,「public」というスキーマのアイコンを選択する。次に「編集」メニューから「新規オブジェクト」->「新しいテーブル」を選択する。するとテーブル作成ダイアログが表示されるので,まず「名前」のところにテーブル名を入力する(写真5[拡大表示])。次に「列」タブを選び,「追加」ボタンを押して列を一つずつ追加していく。今回は「i」という列と「j」という列を追加する。i列は主キーにしたいので,「NOT NULL」を忘れずに選択しておく(写真6[拡大表示])。最後に主キーを定義するために,「制約」タブを選ぶ。「追加」ボタンを押して表れるダイアログから「列」タブを選び,「追加」ボタンを押すとNOT NULL制約の付いた列だけが表れるので,ここではi列を選択し,「OK」を押すと写真7[拡大表示]になり,ここで「OK」を押せばテーブルが作成される。

レポート機能などが特徴のphpPgAdmin 3.1

写真8●phpPgAdmin ログイン画面
写真9●phpPgAdmin 初期画面
写真10●phpPgAdmin オブジェクト階層表示
写真11●phpPgAdmin テーブル作成画面(1)
写真12●phpPgAdmin テーブル作成画面(2)
写真13●phpPgAdmin テーブル作成画面(3)
 phpPgAdminはWeb用のスクリプト言語PHPで実装されたPostgreSQL専用の管理ツールである。したがって,PgAdminと違って表示のためにWWWブラウザが必要になるものの,反面X Window System環境がいらないというメリットがある。

 phpPgAdminの歴史は比較的新しく,最初にリリースされたのは2002年である。PostgreSQL 7.4に対応した最新バージョン3.1は,今年の10月7日にリリースされたばかりである。PostgreSQL 7.3のほか,PostgreSQL 7.0.x,7.1.x,7.2.x,7.4にも対応している。phpPgAdminのライセンスはGPLである。

 動作環境としては,PHPのバージョン4.1以降が必要である。当然のことながら,ApacheなどのWWWサーバーも一緒に必要になる。Apache+PHPの組み合わせはUNIX系のOSやLinuxのほか,Windowsでも動作する。本稿での検証環境はVine Linux2.6上のApache 1.3.28+PHP 4.3.2である。なお,PHPをApacheモジュールとして使う場合には Apache 2.x は推奨されないので注意されたい。使用したPostgreSQL のバージョンは7.3.4である。

 Apache/PHP/PostgreSQLがインストール済であれば,phpPgAdminのインストールは非常に簡単である。ここでは,筆者のWeb用のプライベートディレクトリ「~t-ishii/public_html」にインストールするものとする。また,phpPgAdmin-3.1.tar.gzはあらかじめ/tmpにダウンロード済であるものとする。

$ cd ~t-ishii
$ tar xfz /tmp/phpPgAdmin-3.1.tar.gz
続いてphpPgAdminの設定ファイルを編集する。設定ファイルは上記で展開されたディレクトリphpPgAdminの下のconf/config.inc.phpである。この中に,
$conf['default_lang'] = 'english';
という行があるので,これを
$conf['default_lang'] = 'japanese';
に変更する。これでデフォルトで日本語が使えるようになる。なお,初期設定ではApacheが動いているホストでPostgreSQLも動いていることが前提になっているが,そうでない場合は,
$conf['servers'][0]['host'] = ''; // Hostname or IP address for server.
の行を
$conf['servers'][0]['host'] = 'pghost'; // Hostname or IP address for server.
のように変更すれば良い。この例では,PostgreSQLがpghostというマシンで動いているものとしている。

 phpPgAdminでは,「レポート」という機能を使って,あらかじめ名前を付けてSQL文を登録しておくことによって,いつでもその名前でSQL文を呼び出す機能がある。この機能を使うためには,以下のような初期設定が必要である(レポート機能が必要なければ,この項を飛ばして次に行ってもらって構わない)。以下はPostgreSQLのスーパーユーザー(通常「postgres」で実行する)。

$ createuser phppgadmin
$ psql -f phpPgAdmin/sql/reports-pgsql.sql phppgadmin
 以上で設定が終わったので,さっそくphpPgAdminにログインしてみる。適当なブラウザ(今回はMozilla 1.2を使用)から
http://localhost/~t-ishii/phpPgAdmin/index.php
というURL を入力する。

 すると,写真8[拡大表示]の画面になるので,PostgreSQLのユーザー名,パスワードを入力する。ログイン直後は写真9[拡大表示]の画面になり,上の方に「PostgreSQL 7.3.4にポート番号5432で接続しています。ユーザー「t-ishii」でホスト「2003年10月5日 18:33」にログインしています。」というような情報が表示され,その下の様々なメニューから各種のデータベース操作が可能になる。

 phpPgAdminでは下万左側のメニューをクリックすることにより,pgAdminIII同様,次々にオブジェクトの階層をたどることができる(写真10[拡大表示])。

 phpPgAdminもまたpgAdminIIIと同様多くの機能を持っている。例としてpgAdminIIIのときと同じく,テーブルの定義機能を見てみよう。

 まず左側の画面からテーブル一覧を選択すると右側の画面に「テーブル作成」が出てくるので,それを選択すると,写真11[拡大表示]になるので,テーブル名である「t1」とフィールド(列)の数「2」を入力して「次に」を選ぶ。次の画面ではフィールド名とデータ型を入力して「作成」を選ぶ(写真12[拡大表示])。するとテーブルが作成され,テーブル一覧画面(写真13[拡大表示])に今作成したテーブルが表示される。

 この手順で作成されたテーブルには制約(constraint)がないが,例えば以下の手順で主キーを追加できる。

(1) テーブル一覧から「プロパティ」を選択
(2) フィールド「i」の「変更」を選択
(3) 「NOT NULL」をチェックし,「変更」を選択
(4) もう一度「プロパティ」メニューを表示し,「検査制約一覧」を選択
(5) 「プライマリキー追加」を選択,フィールド「i」を選ぶ

管理者向けのPowerGres Administrator Tool 1.0

写真14●PowerGres Administrator Tool ログイン画面
写真15●PowerGres Administrator Tool 初期メニュー画面
写真16●PowerGres Administrator Tool 設定変更画面
写真17●PowerGres Administrator Tool ログ表示画面
 最後にpgAdminIIIやphpPgAdminとはちょっと性格の違う管理ツールであるPowerGres Administrator Toolを紹介する。

 PowerGres Administrator Toolは,10月14日に発売開始されたばかりの商用パッケージ「PowerGres on Linux」に付属するPowerGres用のWebベースの管理ツールである。将来,独立したオープンソース・ソフトウエアとして配布される予定だ。PowerGresはPostgreSQL 7.3をベースにしており,かつ完全に互換性がある。したがってPowerGres Administrator ToolはPowerGres用のツールではあるが,ほとんどの機能はPostgreSQL 7.3でも使用できる。

 PowerGres Administrator Toolは筆者の勤務する会社が開発したソフトウエアであり,また筆者自身が開発にかかわっているので手前味噌であるのは重々承知の上で,管理ツールによるコンセプトの違いを実感していただくためにあえてご紹介させていただく。

 PowerGres Administrator Toolは,PowerGres on Linuxをインストールすることで使えるようになる(PowerGres on Linuxはベータ版が無償で入手できるので,手軽に試すことができる)。インストーラが付属しており,インストールは手順にしたがえば非常に簡単なので,ここでは省略する。対応するプラットフォームは今のところ,Red Hat 7.3,8.0. 9.0,Turbolinux 8 Server,Turbolinux Enterprise Server 8となっている。

 PowerGres Administrator ToolはphpPgAdminと同様,PHPとPHPのクラスライブラリPEARおよびテンプレート・システムのSmartyで実装されており,実行にはこれらのソフトウェアが必要になるが,PowerGres on Linuxに同梱されているので追加する必要はない。また,既にこれらのソフトウエアがインストールされている場合でも競合しないように考慮されている。

 適当なブラウザから

http://localhost:8080/PowerGresAdmin/scripts/ja/index.php
にアクセスすると,ログイン画面になる(写真14[拡大表示])。

 ここでユーザー名とパスワードを入力するが,これはインストール時に決めたもので,データベースのユーザー名ではない。

 うまくログインできると初期メニュー画面(写真15[拡大表示])になる。この画面では以下のような操作ができる。

SETTING... postgresql.conf,pg_hba.confの設定変更,
      initdb(データベースクラスタの初期化)の実行
DAEMON.... postmasterの起動停止,postmasterのログの閲覧など
OBJECT.... データベース/ユーザー/グループの作成
BACKUP.... バックアップ/リストア
WATCH..... データベースの状態監視.テーブルのアクセス状況,
      実行中トランザクションの表示,ロックの表示,
      テーブル毎のディスク使用量の表示など
OTHER..... VACUUM,sqlの実行など
HELP...... ドキュメントの表示
      (PostgreSQLの日本語ドキュメントが同梱されている)

 pgAdminIIIやphpPgAdminとの大きな違いはSETTING,DAEMON,BACKUP,WATCHである。postgresql.confの設定変更やpostmasterの起動停止ができることからも分かるように,PowerGres Administrator Toolは,データベースの一般ユーザーではなく,データベース・システムの管理者が使うことを想定している(pgAdminIIIやphpPgAdminからはpostmasterの起動や停止はできない)。

 一方,pgAdminIIIやphpPgAdminがサポートしているような,テーブルの作成機能はPowerGres Administrator Toolにはない。つまり,PowerGres Administrator ToolはpgAdminIIIやphpPgAdminと競合するものではなく,共存することもできるわけである。

 それではPowerGres Administrator Toolの代表的な機能をいくつか見てみよう。

 まず設定変更機能がある。SETTINGを選択すると左側の画面に「initdb」「postgresql.conf」「pg_hba.conf」のメニューが並ぶので,「postgresql.conf」を選択すると写真16[拡大表示]の画面になり,各種設定変更ができるようになる。設定データの上下限チェックも行われる他,設定後にpostmasterの再起動が必要かどうかも表示される。

 PowerGresでは,postmasterのログを1日単位で収集しており,障害の発見やパフォーマンスチューニングに利用できるようになっており,「DAEMON」メニューの「ログ」から表示できる(写真17[拡大表示])。ログの詳細度はpostgresql.confで設定できるが,デフォルトでは日時,プロセスID,エラーなどの重要なイベントが記録されるようになっている。ログファイルは極めて大きくなることもあるので,一度に表示できる行数を制限し,「次」「前」によってページをめくるような感じでログを閲覧できる。

 PostgreSQL用の最新管理ツール3本を紹介した。pgAdminIIIとphpPgAdminは動作環境が違うが,機能は良く似ている(phpPgAdminはやや機能が少ない)。好みに応じて使い分けると良いだろう。個人的にはPhpPgAdminのシンプルさに引かれた。PowerGres Administrator Toolは,狙いが違っており,PostgreSQLの管理そのものに特化している。場合によってはpgAdminIIIまたはPhpPgAdminと共存することも考えられる。

 最後に,機能別のサポート状況を表にまとめておいたので参考にしてほしい。

表1●PostgreSQL管理ツールの機能別サポート状況

機能pgAdminIIIphpPgAdminPowerGres
Administrator
Tool
ユーザー登録
データベース定義
スキーマ定義
×
グループ登録
テーブル定義
×
インデックス定義
×
ビュー定義
×
シーケンス定義
×
関数定義
×
ドメイン定義
×
データ型定義
×
演算子定義
×
×
GRANT/REVOKE
×
トリガ定義
×
ルール定義
×
CONVERSION定義
×
×
CAST定義
×
×
VACUUM
×
REINDEX
×
×
CLUSTER
×
×
×
initdb
×
×
postgresql.conf
×
×
pg_hba.conf
×
×
バックアップ
×
×
リストア
×
×
ログの参照
×
×

石井達夫(Tasuo Ishii)


■著者紹介
石井達夫(いしい・たつお)氏
1984年,SRA入社。主にUNIX関連の開発に従事するかたわら,95年からPostgreSQLのメーリング・リストを主宰。現在はオープンソースソリューション部でPostgreSQL関連のビジネス活動を技術支援。著書に『PostgreSQL完全攻略ガイド』(技術評論社),『PHPxPostgreSQLで作る最強Webシステム』(技術評論社),『PostgreSQL構築・運用ガイド』(日経BP,共著)などがある。日本PostgreSQLユーザ会理事長。