PostgreSQL 8.0.1 のインストールログ 1. 展開 postgresql-8.0.1.tar.gz を使用。 gtar zxvf postgesql-8.0.1.tar.gz 2. configure と make ./configure --prefix=/www/pgsql (マルチバイトのコードは取り込まれてるそうなので指定しなくてよい) gmake gmake install (root で) 3. postgres ユーザの登録 /usr/sbin/groupadd postgres /usr/sbin/useradd -g postgre -m -d /www/pgsql chown -R postgres /www/pgsql (postgres グループを作成し、postgres ユーザをそのグループ  に属し、ホームディレクトリをインストールディレクトリにして登録。 2. でインストールしたディレクトリも postgres の所有にしておく) 4. ユーザ postgres での設定例 a. su - postgres b. /www/pgsql/bin/initdb -E EUC_JP -D /www/pgsql/data c. /www/pgsql/bin/postmaster -i -D /www/pgsql/data > /www/pgsql/log/logfile 2>&1 & (うまくいったら自動起動するように /etc/init.d/postgres として #!/bin/sh su - postgres -c "/www/pgsql/bin/pg_ctl start -l /www/pgsql/log/logfile -D /www/pgsql/data -o '-i'" という起動スクリプトを準備し、/etc/rc3.d/S99postgresql にリンクしておく) (注1: Solaris10 ではサービスの管理に SMF(Service Management Facility)を 使うようになっているが、面倒なので旧来の方法で起動している。) (注2: 当初 postmaster を起動すると、ログに checkpoint are occuring too frequently と出たので、postgresql.conf (データベースを作成する ディレクトリにある。上記の場合は /www/pgsql/data) でパラメータを 調整する。今回は checkpoint_segments を 3 から 30 に増やした。) d. 環境変数 以下の環境変数を登録する setenv POSTGRES_HOME /www/pgsql setenv PGLIB $POSTGRES_HOME/lib setenv PGDATA $POSTGRES_HOME/data (必要なら MANPATH や LD_LIBRARY_PATH にも登録を加える) e. postgres ユーザの登録 createuser コマンドで登録 (Web サーバからも使う場合は nobody も登録しておく。ただし権限は制限) f. データベースの作成 (ここからは作成権限のある登録ユーザでやればよい。 ここでは石原博士作成のSF雑誌データベースの例をあげる。) createdb sfmgz g. テーブルの設計 create ステートメントをファイルに作成(sfmgz_tab.create) create table sfmgz_tab ( author varchar(58), title varchar(90), pages varchar(9), times int2, comment char(6), magazine varchar(30), date char(10), volume varchar(7), org_author varchar(39), org_title varchar(108), translator varchar(20), number int2 ); h. テーブル作成 psql sfmgz < /usr/local/pgsql/sfmgz_tab.create i. テーブルにデータを入れる psql sfmgz sfmgz=> \copy sfmgz_tab from /usr/local/pgsql/sfmgz_bk.tab (データはあらかじめ TAB 区切りにしておく) j. 確認 sfmgz=> select * from sfmgz_tab where number = 8000; 結果が表示されれば OK。 k. 他のユーザ(nobody とか)からも使う場合は grant コマンドで設定 grant select on sfmgz_tab to nobody;