データベースサーバ(PostgreSQL)を立ち上げる


PostgreSQLの特徴

PostgreSQLの特徴を以下に示します。

PostgreSQLのインストール

今回は、PostgreSQL を Vine Linux 1.1 上にインストールします。 その際の手順を以下に説明します。

ダウンロード

PostgreSQLの本家のホームページは、以下のURLになります。
http://www.postgresql.org/
また、日本では、日本PostgreSQLユーザ会があります。URLは以下になります。
http://www.jp.postgresql.org/
上記のURLより、適当なFTPミラーサイトを探し、PostgreSQLのソースファイルを ダウンロードします。

PostgreSQLの各種パッチに関する情報は、
http://www.sra.co.jp/people/t-ishii/PostgreSQL/index.html
にあります。上記のURLより、パッチ済みのソースファイルも入手できます。
今回は、上記のURLよりパッチ済みの postgresql-6.5.3-patched-20000215.tar.gz をダウンロードしました。
また、
http://www.remus.dti.ne.jp/~sim/postgres/index.html
より、PostgreSQLの日本語マニュアル psqlj-6.5.3.diff.gz をダウンロードします。

専用アカウント作成

PostgreSQLを利用するためには、専用のUNIXアカウントを利用すると便利です。 複数のユーザがPostgreSQLを利用する通常の環境では、専用のアカウントにより、 データベースを管理するようにします。
ここでは、
ユーザ名          :postgres
ユーザID          :200
グループID        :200
ホームディレクトリ:/usr/local/pgsql
というユーザ postgres を作成します。rootで以下のように実行します。
# vipw
以下の行を追加します。
postgres:*:200:200:PostgreSQL User:/usr/local/pgsql:/bin/tcsh
# vi /etc/group
以下の行を追加します。
postgres::200:postgres
# passwd postgres
# mkdir /usr/local/pgsql
# chown -R postgres.postgres /usr/local/pgsql

カーネル再構築

PostgreSQLでは、System V の共有メモリ機能が必要です。FreeBSDでは、 デフォルトでこの機能は使えないので、カーネルの再構築をする必要があります。 カーネルコンフィグレーションファイルをチェックし、以下のキーワードが無い 場合には追加します。
options SYSVSHM
options SYSVSEM
options SYSVMSG

インストール

ここから以降のステップは、postgres ユーザで実行します。
% su - postgres
PostgreSQL のソースを置くディレクトリを作成します。
% cd /usr/local/pgsql
% cd src
作成したディレクトリにダウンロードしたファイルを置きます。格納したファイルは 以下になります。
パッチ済みソースファイル    postgresql-6.5.3-patched-20000215.tar.gz
日本語マニュアル            psqlj-6.5.3.diff.gz
アーカイブを解凍・展開し、日本語マニュアルをインストールします。
% cd src
% tar xvfz postgresql-6.5.3-patched-20000215.tar.gz
% cd postgresql-6.5.3
% zcat psqlj-6.5.3.diff.gz | patch -p0
次に、configureスクリプトを実行し、プラットフォームに適した Makefilw を作成します。
% cd src
% ./configure --with-mb=EUC_JP
--with-mb=で文字コードを指定します。
configure が無事終了したら、コンパイルします。
% gmake all
...
All of PostgreSQL is successfully made. Ready to install.
上記のように表示されたら、コンパイルが正常に終了しました。以下のように インストールします。
% gmake install
% cd ../doc
% gmake install  ドキュメントのインストール
以上で PostgreSQL のインストールは終了です。

PostgreSQLの環境設定

インストールが完了したら、PostgreSQL を利用するために必要な環境設定を行います。 ここでの環境設定は、ユーザ postgres だけでなく、PostgreSQL を利用する全ての ユーザに必要です。

PostgreSQLの初期設定

データベースの初期化

PostgreSQLでは、データベースを管理するためのディレクトリが必要です。 これが環境変数 PGDATA で指定したディレクトリです。このディレクトリを作成 することを「データベースの初期化」と呼びます。初期化が終わったディレクトリを 「データベースインスタンス」と呼び、後述の postmaster が管理します。 1つのデータベースインスタンスには、1つの postmaster プロセスが対応します。 ポート番号を変えれば複数の postmaster プロセスを起動することができますので、 1つのホストに複数のデータベースインスタンスが共存できます。
データベースの初期化を行うには、環境変数 PGDATA でデータベースの場所が既に 指定されているので、postgresユーザで以下のように実行します。
% initdb
上記のコマンドを実行して、データベースの初期化を行ったユーザが、その データベースの所有者となります。

postmasterの起動

postmaster は一度起動されたらずっと働き続け、クライアントからの接続要求を 待ちます。接続要求があるとデータベースエンジンを起動し、データベースを利用 できる状態にします。従って、postmaster が動作していないと PostgreSQL を 利用することはできません。
postmaster を起動する際に、環境変数 PGDATA 、または引数 -D で データベースインスタンスを指定しますが、postmaster は、この データベースインスタンスを作成したユーザのみ実行することができます。
環境変数 PGDATA は既に設定してあるので、postgres ユーザで以下のように postmaster を起動します。
% postmaster -S -i
postmaster には、以下のようなオプションがあります。

postmasterの自動起動

システムの起動時に、自動的に postmaster が起動するように設定します。 Linux の場合は /etc/rc.d/rc.local に、FreeBSD の場合は /etc/rc.local に 以下の記述を追加します。
#
# Starting PostgreSQL Server
#
POSTGRESDIR=/usr/local/pgsql
if [ -x $POSTGRESDIR/bin/postmaster -a -d $POSTGRESDIR/data ]; then
        echo -n 'Starting PostgreSQL Server:'
        rm -f /tmp/.s.PGSQL.5432
        su - postgres -c "postmaster -S -i"
        echo -n 'postmaster. '
fi
ここで、/tmp/.s.PGSQL.5432 は postmaster が使用する UNIX ドメインのソケットで 5432 はポート番号を表しています。

ユーザ登録

PostgreSQL には、UNIX と同様に、「ユーザ」という概念があります。PostgresSQL を 使う場合には、あらかじめユーザ登録を行っておく必要があります。ユーザ登録は postgres ユーザで以下のように行います。
% createuser sakai                                                ← ユーザ sakai を登録します。
Enter user's postgres ID or RETURN to use unix user ID:1001 ->    ← ユーザIDを指定します。デフォルト値はUNIXのユーザIDと同じ値です。
Is user "sakai" allowed to create databases (y/n) y               ← 新しいデータベースを作る権限を与えるかを設定します。通常は y とします。
Is user "sakai" a superuser? (y/n) n                              ← postgresユーザと同じ権限を持たせるかどうかを設定します。通常は n とします。
createuser: sakai was successfully added
なお、一度登録したユーザを削除するには、以下のようにします。
% destroyuser sakai

データベースの作成

PostgreSQL では複数のデータベースを持つことができます。データベースを作成する には、createdb コマンドを使います。
% createdb データベース名
データベース名を省略した場合には、ユーザ名と同じデータベース名がデフォルト値に なります。データベースは、$PGDATA 以下に作成されます。
データベースを消去するには、destroydb コマンドを使います。
% destroydb データベース名
destroydb コマンドは、postgresユーザか、そのデータベースを作ったユーザだけが 実行できます。

セキュリティ機能

PostgreSQL では、必要に応じて以下のようにセキュリティを細かく設定できます。

host based authentication (HBA)

host based authentication の設定は、$PGDATA/pg_hba.conf で行います。 pg_hba.conf のフォーマットは
host DBNAME IP_ADDRESS ADDRESS_MASK USERAUTH [AUTH_ARGUMENT]
以下に、各キーワードについて説明します。 pg_hba.conf は上から順に見ていき、条件にマッチした行が見つかると、 それが適用されます。以下に例を示します。
host   all   192.168.0.1   255.255.255.255   reject
host   all   0.0.0.0       0.0.0.0           trust
上記の例では、192.168.0.1 以外のホストからの接続が許可されます。

flat file password authentication

flat file password authentication では、基本的にデータベースディレクトリ ($PGDATA)にパスワードファイルを用意し、それを使ってユーザ認証を行います。
host   unv   192.168.0.1   255.255.255.255   password passwd
上記の例では、unv というデータベースに対して、192.168.0.1 のホストからのみ 接続を許可し、ユーザは $PGDATA/passwd を使って認証を行います。
認証用のパスワードファイルは、pg_passwd コマンドで作成します。pg_passwd は postgres ユーザで実行します。
% cd $PGDATA
% pg_passwd passwd
File "passwd" does not exist. Create? (y/n): y  ←最初だけ聞かれます。
Username:  sakai           ←認証の対象となるユーザ名
New password:              ←パスワードを入力
Re-enter new password:     ←確認のため、パスワードをもう一度入力
既に登録済みのユーザのパスワード変更も pg_passwd で行います。
なお、flat file password authentication では、ユーザが入力したパスワードは、 rlogin や telnet と同様に、そのままの形でネットワーク上を流れます。 そのため、次の crypt authentication では、パスワードが暗号化されてから ネットワークに送出されるので、より安全です。

crypt authentication

PostgreSQL のシステムテーブル pg_user と pg_shadow を使って認証を行う方法です。 実際にユーザ名とパスワードが格納されているのは pg_shadow の方で、 このテーブルは postgres ユーザ以外はアクセスできません。 pg_user は pg_shadow から作られ、一般ユーザもアクセスできますが、 パスワードカラムは "****" となっていて、パスワードを読み取ることは できません。
crypt authentication を使うには、pg_hba.conf で "crypt" というキーワードを 使います。
host unv   192.168.0.1   255.255.255.255   crypt
pg_shadow テーブルにユーザをパスワード付きで登録するには、postgresユーザで 以下のようにします。
% psql -n データベース名      ← データベースに接続します。
以下のSQL文を実行 (データベース名を test とします)
test=> create user sakai with password "foo";
既に登録済みのユーザのパスワードを変更するには、以下の SQL 文を実行します。
test=> alter user sakai with password "bar";

テーブル毎のアクセス権設定

SQL 文の grant/revoke により、select/insert/update/delete/rule の実行権を ユーザ/グループに対して許可/不許可の設定ができます。SQLの標準では、 テーブルを作成しただけでは、そのテーブルを作成したユーザ以外にはいっさい アクセスが許されていませんので、必要に応じて他のユーザがアクセスできるように する必要があります。

基本的な使用方法

psql

PostgreSQL では、psql という SQL インタプリタを利用するのが最も基本的な 使い方です。psql は起動されると SQL 文の入力待ちとなります。SQL 文が入力 されるとそれをバックエンドに転送し、実行結果がバックエンドから戻ってくると それを表示します。psql は会話的に使うことを想定されていますが、多くの UNIX コマンドのように、シェルスクリプトなどからバッチ的に実行することもできます。

psql の基本的な使い方は、
% psql データベース名
です。データベース名を省略すると、ユーザ名と同じデータベース名を指定したものと みなします。
データベースは createdb によってあらかじめ作成済みでなければなりません。 どんなデータベースがあるか分からないときは、
% psql -l
で、データベースの一覧表を表示できます。
また、日本語を使用する場合は、
% psql -n データベース名
とします。しかし、この場合は、bash や tcsh と同じようなコマンドヒストリや 行編集の機能が使用できなくなるため、注意が必要です。
また、SQL文をバッチ的に実行したい場合は、
% psql データベース名 < コマンドファイル
のようにして、SQL文を記述したコマンドファイルを入力として与えます。

この他にも psql には、他にも様々な起動オプションがあります。代表的なものを 以下に示します。

テーブルの作成

SQL 文では、テーブルの作成は "create table" を使用します。例えば、 「品名」「値段」をそれぞれ "hinmei"と"nedan"カラムとして持つ "shinamono"テーブルを作成するには、以下のようになります。 データベース名を test とします。
test=> create table shinamono (hinmei text, nedan int);
CREATE
ここで、text は文字列のデータ型、int は整数のデータ型です。

データ登録

テーブルが作成できたら、データ登録を行います。insert を用いて、 以下のように行います。
test=> insert into shinamono values ('みかん',100);
INSERT 18419 1
test=> insert into shinamono values ('りんご',150);
iNSERT 18420 1
test=> insert into shinamono values ('メロン',2500);
INSERT 18421 1
注意点として、文字列は '' で囲む必要があります。

データ表示

データを登録したので、テーブルの中身を表示してみます。データの表示には select を用いて、以下のように行います。
test=> select * from shinamono;
hinmei|nedan
------+-----
みかん|  100
りんご|  150
メロン| 2500
(3 rows)
ここで、select の次は「ターゲットリスト」と呼ばれ、どの項目を表示するかを 指定します。*を指定すると、上記のようにテーブルの全項目を表示します。

update

delete

テーブルの中身を削除するには、delete を用います。 例えば、みかんの行を削除するには以下のように行います。
test=> delete from shinamono where hinmei = 'みかん';
DELETE 1

drop table

delete では、テーブルの中身は消去できますが、テーブルは残ります。 テーブル自体を削除するには、drop table を用いて、以下のように行います。
test=> drop table shinamono;
DROP

copy

ヘルプ機能

SQL の簡単な使い方を、psql のヘルプ機能で知ることができます。\h と入力する ことにより、SQL の一覧が表示されます。
特定の SQL コマンドのヘルプを見るには、
\h コマンド名
と入力します。

pgaccess

PostgreSQLには、pgaccess という Tcl/Tk で作成されたデータベース管理ツールが 付属しています。pgaccess を使用するためには、事前に Tcl/Tk をインストール しておく必要があります。Tcl/Tk は、最近の Linux や FreeBSD では、最初から バージョン8.0系+日本語パッチ済みの Tcl/Tk がインストールされています。もし、 インストールされていない場合は、パッケージなどよりインストールします。
Tcl/Tk をインストールしたら、次は、libpgtcl をインストールします。 まず、postmaster のプロセスを停止します。
# ps ax | grep postmaster
  372  ?  S    0:00 /usr/local/pgsql/bin/postmaster -S -i  
# kill 372
次に、PostgreSQL のソースファイルを展開したディレクトリに移動し、 postgres ユーザになります。
% cd $DIR/postgresql-6.5.3/src
% su - postgres
Password
$
以下のように configure を実行します。
$ ./configure --with-mb=EUC_JP --with-tcl --with-tclconfig=/usr/lib --with-tkconfig=/usr/lib
--with-tclconfig で TclConfig.sh があるディレクトリを、 --with-tkconfig で TkConfig.sh があるディレクトリを指定します。
上記の configure で以下のような行が出力されることを確認します。
checking for tclConfig.sh... /usr/lib/tclConfig.sh
checking for tkConfig.sh... /usr/lib/tkConfig.sh
きちんと出力されていれば、以下のようにしてインストールを行います。
% gmake
% su
Password:
# gmake install
以上で libpgtcl のインストールは終了です。 /usr/local/pgsql/lib に libpgtcl.a と libpgtcl.so が、 /usr/local/bin に pgtclsh と pgtksh がインストールされていることを 確認します。
次に、pgaccess をインストールします。PostgreSQLのソースディレクトリの bin/pgaccess ディレクトリに移動し、そこにある pgaccess ファイルを編集します。
% cd $DIR/postgresql-6.5.3/src/bin/pgaccess
% vi pgaccess
以下の部分を環境に合わせて変更します。
PATH_TO_WISH=/usr/bin/wish8.0jp
PGACCESS_HOME=/usr/local/pgsql/lib/pgaccess
編集後、このファイルを postgres ユーザで /usr/local/pgsql/bin にコピーします。
% su postgres
Password:
$ cp pgaccess /usr/local/pgsql/bin

pgbash

pgbash は、bash-2.03 のシェルに PostgreSQL用の直接SQLや埋め込みSQLの インターフェースを組み込んだシェルです。ログインシェルやサブシェルとしてや シェルスクリプトの実行用のシェルとして使用することができます。
pgbashでは、SQL文を直接入力することができます。SQL文は、1つのシェルコマンド として扱われるので、SQL文とパイプライン、リダイレクション、 バックグラウンドジョブ命令を組み合わせて実行することができます。また、 exec_sql コマンドを使用すると、SQL文に各種オプションをつけて実行できます。
それでは、pgbashをインストールします。以下のURL
http://www.psn.co.jp/PostgreSQL/pgbash/index-j.html
より、pgbash を入手します。今回は pgbash-2.1.tar.gz を入手しました。
また、pgbash は、bash-2.03 のソースファイルも必要なので、以下のURL
ftp://ftp.gnu.org/gnu/bash/
より、bash-2.03.tar.gz を入手します。
pgbash をインストールするには、PostgreSQLがあらかじめインストールされている 必要があります。なお、pgbash は、PostgreSQLが /usr/local/pgsql ディレクトリに インストールされていることを前提にしています。これ以外のディレクトリ (例えば xxx/pgsql)にインストールしてある場合は、以下のようにシンボリックリンク を張ります。
# ln -s xxx/pgsql /usr/local/pgsql
入手した pgbash-2.1.tar.gz を適当なディレクトリで解凍・展開し、 ディレクトリを移動します。
% tar xvfz pgbash-2.1.tar.gz
% cd pgbash-2.1
pgbash-2.1 ディレクトリの中で bash-2.03.tar.gz を解凍・展開します。
% tar xvfz ../bash-2.03.tar.gz 
これで、pgbash-2.1 ディレクトリの下に、bash-2.03 ディレクトリが作成されます。 次に、bash-2.03 にパッチを当てます。pgbash-2.1/patch ディレクトリの中で make を実行します。
% cd patch
% make
その後、pgbash-2.1/src ディレクトリに移動して、configure、make、make install でインストールします。
% cd ../src
% ./configure
% make
% su
Password:
# make install
上記により、"pgbash" が /usr/local/bin に、"pgbashrc" が /etc にインストール されます。以上で pgbash のインストールは終了です。
次に pgbash を使うための以下のような環境設定を行います。

OpenZOLAR

OpenZOLARとは、 インターナショナルシステムリサーチが開発したWeb-DB連携ソフトウェアZOLARの FreeBSD/Linux対応版で、商用/非商用を問わず無料で利用できます。対応データベース サーバとしては PostgreSQLが挙げられます。
以下のURL
http://isr.co.jp/open_zolar/ より、使用するOS(FreeBSD or Linux)に合わせたファイルをダウンロードします。 ここでは、OSに Vine Linux 1.1 を、データベースサーバに PostgreSQL-6.5.3を 使用しているので、openzolar500_Linux_libc6.tgzを入手しました。
入手後、適当なディレクトリで解凍・展開して、ディレクトリを移動します。
% tar xvfz openzolar500_Linux_libc6.tgz
% cd openzolar500_Linux_libc6
ドキュメントが docs ディレクトリ以下に、バイナリが cgi-bin ディレクトリ以下に あります。バイナリを、Apache の CGI実行許可のあるディレクトリ (ここでは /usr/local/apache/htdocs/cgi-bin/)にコピーします。 具体的には以下のように行います。
% su www (wwwはWebの管理ユーザ)
Password:
$ install -c -m 444 cgi-bin/zcall.so /usr/local/apache/htdocs/cgi-bin/
$ install -c -m 444 cgi-bin/zfunc.so /usr/local/apache/htdocs/cgi-bin/
$ install -c -m 644 cgi-bin/zolar.conf /usr/local/apache/htdocs/cgi-bin/
$ install -c -m 555 cgi-bin/zolar /usr/local/apache/htdocs/cgi-bin/
次に、OpenZOLARの設定ファイル zolar.conf を環境に合わせて編集します。 ここでは、以下のような内容に編集しました。
DefaultDatabase openzolar
ErrorUserNotify 100
ErrorLogFile    /usr/local/apache/htdocs/cgi-bin/zolar.log
DefaultPage     1
BuiltinImage    1
OutputKanjiCode EUC 
InputKanjiCode  EUC 
DatabaseKanjiCode       EUC
UserName www 
Password http
LoadLibrary     /usr/local/apache/htdocs/cgi-bin/zcall.so
LoadLibrary     /usr/local/apache/htdocs/cgi-bin/zfunc.so
LoadLibrary     /usr/local/apache/htdocs/cgi-bin/zhttp.so
また、OpenZOLAR のマニュアルを入手します。上記の URLに置いてあるため、 以下のようにして行います。
% wget http://www.isr.co.jp/~muc/openzolar/release/openzolar40_manual.tar.gz
入手後、適当なディレクトリで解凍・展開して、ディレクトリを移動します。
% tar xvfz openzolar40_manual.tar.gz
% cd openzolar40_manual
このディレクトリ以下の htdocs/zolar40 と cgi-bin/zolar40 にそれぞれの マニュアルとテンプレートファイルがあるので、これらを以下のようにして Apacheの各ディレクトリへコピーします。
% su www
Password:
$ cp -r htdocs/zolar40 /usr/local/apache/htdocs/
$ cp -r cgi-bin/zolar40 /usr/local/apache/htdocs/cgi-bin/
インストールしたマニュアルは こちら になります。
以上で OpenZOLAR のインストールは終了です。正しくインストールできているか どうか確認するには、Webブラウザで
http://サーバ名/cgi-bin/zolar/version.html
にアクセスしてみます。 このようなページが表示されるはずです。
OpenZOLARを使用するためには、OpenZOLARが理解できるタグを加えた zhtml ファイルを 用意する必要があります。zhtmlファイルのテンプレートやサンプルファイルについては 先程インストールしたマニュアルを御覧ください。

PHP

PHPはHTML中に埋め込むプログラミング言語です。PHPは、PostgreSQL のような 多くのデータベースとの連携が可能な言語なので、データベースと連携した Webページ の作成の場面でよく利用されます。機能的には CGI と同様のことが可能ですが、 PHPは Apache のモジュールとして動作させることができるので、CGIに比べて 起動時のオーバーヘッドが少なくてすみます。
PHPのオフィシャルWebページは、以下になります。
http://www.php.net/
また、日本での情報については、以下になります。
http://www.cityfujisawa.ne.jp/~louis/apps/phpfi/index.html
また、日本PHPユーザ会の公式Webページは以下になります。
http://www.php.gr.jp/
今回は、以下の PHP国際化プロジェクトの Webページ
http://php.jpnnet.com/
より、PHPの国際化版である php-3.0.15-i18n-ja.tar.gz を入手しました。
また、Apache のソースファイルも、以下のURL及びそのミラーサイトより、 事前に入手しておきます。
http://www.apache.org/
今回は、apache_1.3.12.tar.gz を入手しました。
Apacheのソースファイル(apache_1.3.12.tar.gz)と、 PHPのソースファイル(php-3.0.15-i18n-ja.tar.gz)を同じディレクトリに 置きます。
まず、Apache のインストールを行います。以下の手順で行います。
% tar xvfz apache_1.3.12.tar.gz
% cd apache_1.3.12
% ./configure --enable-module=so
% make
% su
Password:
# make install
次に、PHPのインストールを行います。以下の手順で行います。
% cd ..
% tar xvfz php-3.0.15-i18n-ja.tar.gz
% cd php-3.0.15-i18n-ja
% ./configure --with-pgsql --with-apache=../apache_1.3.12 --enable-track-vars --with-apxs=/usr/local/apache/bin/apxs --enable-i18n --enable-mbregex
% make
% su
Password:
# make install
次に、PHPの設定ファイルをコピーします。以下のように行います。
# cp php3.ini-dist /usr/local/lib/php3.ini
php3.ini ファイルについて、以下の記述を追加、または変更します。
# vi /usr/local/lib/php3.ini
以下の記述を追加、または変更
i18n.http_output = PASS
i18n.internal_encoding = EUC-JP
i18n.script_encoding = auto
i18n.http_input = auto
また、Apache の設定ファイル(/usr/local/apache/conf/httpd.conf)を編集します。
# vi /usr/local/apache/conf/httpd.conf
以下の記述のコメントアウトを外し、有効にします。
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
以下のように DirectoryIndex に index.php3 を追加します。
DirectoryIndex index.html index.php3
以下の記述を追加、または変更します。
LoadFile /usr/local/pgsql/lib/libpq.so
SetEnv LD_LIBRARY_PATH /usr/local/pgsql/lib
LoadModule php3_module /usr/local/apache/libexec/libphp3.so
編集後、Apache を起動します。以下のように行います。
起動
# /usr/local/apache/bin/httpd
再起動
# kill -HUP `cat /usr/local/apache/logs/httpd.pid`
Apache の起動後、PHPのテストを行います。Apacheのドキュメントルート (/usr/local/apache/htdocs/)以下に test.php3 という名前で、以下の内容の ファイルを作成します。
< ?php
  phpinfo();
? >
ブラウザで http://localhost/test.php3 にアクセスし、 このように 画面が表示されれば、PHPが Apache のモジュールとしてインストールされました。
また、PHPの実行版をインストールするには、以下のようにします。
% cd $DIR/php-3.0.15-i18n-ja
% make clean
% ./configure --with-pgsql --enable-force-cgi-redirect --enable-track-vars --enable-i18n --enable-mbregex
% make
% su
Password:
# make install
以上で PHP の実行バイナリが /usr/local/bin にインストールされます。

ODBC

ODBC(Open DataBase Connectivity)とは、PostgreSQLのような データベース管理システム(DataBase Management System,DBMS)のための共通の インターフェースです。ODBCによって、異なる仕様の様々な DBMS が統一された プログラミングインターフェースで使用できます。
PostgreSQL用の ODBCドライバとしては PostgreSQL ODBC Driver が代表的です。 PostgreSQL の 6.2〜7.0に対応しています。この PostgreSQL ODBC Driver の オフィシャルサイトが以下のURLにあります。
ftp://ftp.postgresql.org/pub/odbc/index.html
上記のURLより、最新版のパッケージ(ファイル名は postdrv.exe)を入手します。
入手した postdrv.exe を Windows マシンで実行し、質問に答えるだけでインストール できます。インストールの途中の Select Components 画面では、 "Do not install Driver Manager"を選択します。
上記の作業で PostgreSQL ODBC Driver のインストールは出来たのですが、 このままでは日本語が扱えません。そのため、以下のURL http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html
より、日本語に対応させるためのパッチファイル"PSQLODBC.DLL"を入手し (圧縮されています)、C:\WINDOWS\SYSTEM ディレクトリにコピー(英語版を上書き) します。以上で ODBCドライバのセットアップは終了です。
次に PostgreSQLデータベースが利用できるように ODBC の設定を行います。 ます、PostgreSQLサーバについて、以下の項目を確認します。 上記の項目を確認した後、Windowsマシンのコントロールパネルから、 ODBCデータソースをダブルクリックして ODBCデータソースアドミニストレータを開き、 PostgreSQLデータベースにアクセスするための新しいデータソースを作成します。
最初にデータソースの種類を選びます。以下の3種類があります。 データソースの種類を決めたら、ODBCデータソースアドミニストレータ画面の上部の タブから、該当するページを開き、「追加」をクリックします。次の データソースの新規作成画面で、PostgreSQL を選び、「完了」をクリックします。
次に、PostgreSQL Driver Setup 画面が表示されます。ここで、 PostgreSQLデータベースにアクセスするために必要な情報を入力します。 Data Source:欄、および Description:欄には、作成するデータベースの名称と その説明を指定します。なお、Data Source:欄以外は空欄にしておくことも 可能です。
また、PostgreSQL ODBC Driver の細かな設定を行うには、 この画面(PostgreSQL Driver Setup画面)の「Driver」をクリックし、 Advanced Options (Driver)画面を開きます。各項目の内容は省略します。 推奨設定を以下に示します。
オプション 推奨設定
Disable Generic Optimizer 理想はオフ、PostgreSQLサーバのオプティマイザ(GEQO)を使用しないようにします。
CommLog オフ
KSQO(Keyset Query Optimization) オン
Read Only (Default) オフ、新規作成データソースの Read Only オプションの初期値を指定します。
Recognize Unique Indexes オン
Parse Statements オン、オンの場合、PostgreSQLサーバからレコード内容を取得した際に、より充実したカラム内容(精度など)をアプリケーションに報告します。
Use Declare/Fetch オフ
Cancel as FreeSmt (Exp) オフ
Unknown Sizes 通常は Maximum
Text as LongVarChar 理想はオン
Unknowns as LongVarChar 理想はオン
Bools as Char 理想はオフ
Cache Size 100
Max VarChar 254
Max LongVarChar 4094
Sys Table Prefixes dd_;
Connect Settings PostgreSQLデータベース接続時に毎回実行したいSQL文を指定します。
また、データソースの動作設定を行うには、 この画面(PostgreSQL Driver Setup画面)の「DataSource」をクリックし、 Advanced Options (PostgreSQL)画面を開きます。各項目の内容は省略します。 推奨設定を以下に示します。
Read Only オフ、オンにした場合、レコードの更新をドライバレベルで禁止します。
Row Versioning オフ、レコードの更新処理中に他のユーザによって該当レコードが更新されたかどうかの判断材料を与えます。
Show System Tables オフ、システムテーブル("pg_"で始まるテーブルなど)を利用できるようにします。
Protocol PostgreSQLのバージョンに合わせます。6.5.xは 6.4とします。
Show Column オフ、oidシステムカラムを利用できるようにします。
Fake Index oidシステムカラムに固有インデックスがあるように見せかけます。
Connect Settings PostgreSQLデータベース接続時に毎回実行したいSQL文を指定します。
以上で PostgreSQL ODBC Driver の設定は完了です。
適当な Windowsアプリケーションから、PostgreSQLデータベースサーバにアクセス できることを確認します。例として、Microsoft Access を取り上げます。
Microsoft Access を起動し、 「ファイル」→「外部データの取り込み」→「テーブルのリンク」を選び、リンク画面 を表示します。そこで、「ファイルの種類」欄から、"ODBC Database ()"を選び、 データソース選択画面に切替えます。そこで、作成したデータソース (ファイルデータソース or コンピュータデータソース)を選び、作成したデータベース を開きます。

戻る

sakai@oak.eg.t.kanazawa-u.ac.jp
Last modified: Mon Aug 21 03:32:04 JST 2000