PostgreSQL 7.1.1 のインストール
SERVER
PostgreSQL とは
PostgreSQL は、Linux で動くフリーのデータベースサーバ (DBMS) です。
なんといっても強みはフリーソフトであるというところでしょうか。このクラスのデータベースサーバを無料で使用できるのはとても興味深いところです。Linux 自身も無料で使用できるので、低コストでも規模が大きめのことができるかもしれませんね。
その他、オブジェクト指向データベースとのことで、僕にはいまいちぴんときませんけど、なかなか脚光を浴びているようです。他、カラムに配列がつかえたり、テーブルのカラムを継承できたりと、一風違った性質を持っているのも面白いところです。また Windows 用の ODBC ドライバも提供されているので、ASP などのデータベースシステムとしても利用することができます。
今回はこの PostgreSQL を Linux Slackware 7.1 (Kernel は 2.4.2 へアップグレード) へ導入し、ODBC ドライバをつかって Windows から PostgreSQL へ接続するところまでを紹介してみようと思います。
入手とインストール
まずは、 ftp://ring.asahi-net.or.jp/pub/misc/db/postgresql/ から、PostgreSQL のバージョン 7.1.1 ( postgresql-7.1.1.tar.gz ) を入手しました。
そして次のような操作を行って圧縮ファイルを展開します。
tar xvzf postgresql-7.1.1.tar.gz
cd postgresql-7.1.1
これで、展開後の postgresql-7.1.1/ ディレクトリへの移動までが完了しました。
続いてコンパイルとインストール作業に入ります。今回は ODBC を利用するので念のため --enable-odbc オプションを指定することにしました。その他、コードページは UNICODE、プラットフォームは Linux ということで作成を行います。
./configure --with-template linux --enable-multibyte=UNICODE --enable-odbc
gmake
gmake install
これで PostgreSQL 7.1.1 のインストール作業は完了です。続いて起動までの作業を行います。
PostgreSQL の起動まで
まず、PostgreSQL を起動する上で必要なユーザアカウントの作成です。adduser コマンドを使用して postgres という名前のユーザアカウントを作成します。
アカウントの作成が完了したら、続いてデータベースを保存するディレクトリの作成を行います。
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
これで PostgreSQL の起動準備が整いました。今度は su コマンドで postgres ユーザになって、initdb でシステムの初期化を行います。
su - postgres
/usr/local/pgsql/bin/initdb -i -D /usr/local/pgsql/data
これで初期化が完了しました。上記の -i オプションは、TCP/IP での接続をサポート、つまりは外部からの接続を許可する場合に使用します。今回は ODBC での接続を想定していますので、この -i オプションは必須です。
あと、この先の ODBC 接続を想定して、接続できるクライアントコンピュータの許可を行いましょう。これは、/usr/local/pgsql/data/ ディレクトリ内の pg_hba.conf ファイルで行います。このファイルに次のような行を追加しましょう。
host all 192.168.0.0 255.255.255.0 trust
これはすべてのデータベース [all] に対して IP アドレス 192.168.0.0 [192.168.0.0] 、サブネットマスクが 255.255.255.0 [255.255.255.0] のものに対する接続を許可するというものです。その際のユーザ認証は必要ありません。[trust]
あとはいよいよ起動です。次のようにして PostgreSQL を起動します。起動は postgres アカウントで行う必要があるので気をつけてください。
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >/var/log/postgres.log 2>&1 &
この1行で PostgreSQL が起動します。なお、/var/log/postgres.log の部分は、ログファイルを記録するファイル名ですので、環境に合わせて調節してください。
さて、これで PostgreSQL の起動は完了ですけど、データベースサービスだけに、起動直後から動かしたいことと思います。起動時の rc.local などが読み込まれるときには、権限は root ですので、素直には PostgreSQL を起動することができません。Linux 起動時に自動起動させるためには、下のように su コマンドを絡めた表記が必要となります。
su - postgres -c "/usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql/data >/var/log/postgres.log 2>&1 &"
これを rc.local などの起動スクリプトに記述することによって、自動的に PostgreSQL を起動することができるようになります。
データベースの作成
PostgreSQL にデータベースを作成してみましょう。
作成は postgres アカウントで行いますので、もしも postgres アカウントでログインされていなければ、su - postgres などを使用して、postgres アカウントに移行してから以下のコマンドを実行しましょう。
/usr/local/pgsql/bin/createdb testdb
これで、testdb という名前のデータベースが作成できたはずです。このデータベースに対して SQL 文を発行するには /usr/local/pgsql/bin/psql testdb と入力して、testdb へ接続します。
ODBC ドライバの導入
今度は Windows コンピュータに対して、ODBC ドライバをインストールします。
ODBC というのは、さまざまなデータベースシステムを接続できるようにするための技術で、PostgreSQL も、ODBC ドライバをインストールすることによって Windows から簡単に利用できるようにすることができます。
今回は PostgreSQL 用の ODBC ドライバを http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html からダウンロードすることにしました。ダウンロードしたものは、PostgreSQL ODBC Driver 07.01.0004 日本語版 (2001/04/06) ODBC ドライバです。
ダウンロードしたファイル psqlodbc-jp-20010406-bin.zip を解答して、psglodbc.dll ファイルを C:\windows\system や C:\winnt\system32 といった Windows のシステムフォルダへ移動します。そして、register.reg ファイルを実行してレジストリを書き換えれば、ODBC ドライバのインストールは完了です。
あとは、ODBC マネージャを使ってデータソースを登録すれば使えるようになります。
Windows 2000 の場合は 「設定」 → 「コントロールパネル」 → 「管理ツール」 → 「データソース(ODBC)」 から、その他の Windows マシンでも 「設定」 → 「コントロールパネル」 の中に 「ODBC データソース」 というような項目があるものと思います。
ここで、PostgreSQL のドライバを選択して、ODBC データソースの登録を行います。
PostgreSQL 固有の設定で気をつける項目をいくつか挙げておきます。Database、これは登録する ODBC データソース名です。ODBC を経由した場合はこの名前を使って PostgreSQL にアクセスします。Server は PostgreSQL が稼動しているサーバ名を指定します。ドメイン名とか IP アドレスで指定します。Port は PostgreSQL サービスを提供している TCP ポート番号です。通常は 5432 が使用されます。Username, Password は、この ODBC へ接続した際にディフォルトで使用されるユーザ情報だそうです。ユーザ名とパスワードなしで接続するとこの情報が使用されますので怖いです。あんまり設定しないほうがよさそうです。
これで設定完了です。あとは通常の ODBC データベースへ接続する要領で PostgreSQL へアクセスすることができるようになります。
パスワードの設定
さて、今まではパスワードなしでのお話をずっと続けてきましたが、さすがに公開するデータベースでパスワードなしは怖いので、ここですこし、パスワードの設定方法について触れておこうと思います。
まず、PostgreSQL でパスワード認証を行うための設定を行います。パスワードは PostgreSQL 用のパスワードファイルに保存されます。今回はこれが /usr/local/pgsql/data/passwd というファイルに保存されるものとします。
まず、/usr/local/pgsql/data/pg_hba.conf ファイルの中の認証設定のところを password passwd に書き換えます。これは passwd というファイルに記述されたパスワードを使用して認証を行うという意味です。
host all 192.168.0.0 255.255.255.0 password passwd
このように今回の例では trust ではなくて password passwd にすることで認証が必要になります。
つづいて認証に使用するユーザの追加を行いましょう。
/usr/local/pgsql/bin/pg_passwd /usr/local/pgsql/data/passwd
としてパスワードの登録プログラムを起動します。はじめての場合、File "/usr/local/pgsql/data/passwd" does not exist. Create ? (y/n) とたずねられますので y と答えれば自動的に /usr/local/pgsql/data/passwd ファイルを作成してくれます。
続いて Username: とたずねられますので、追加したいユーザ名を入力します。そして New password: では、そのユーザに対するパスワードを入力します。さらに Re-enter password: でパスワードの再確認をかねた再入力を行います。
これでパスワードの設定は完了です。これでユーザ名とパスワードを知っているものがデータベースを利用できるようになります。
なお余談ですけど、ログインしたユーザと同じ名前のデータベースが、そのユーザの標準のデータベースとなるそうです。たとえば、test-user という名前のユーザの場合、標準のデータベース名も test-user です。ご参考までに。