PostgreSQL 8.2.4 のインストールログ 1. 展開 postgresql-8.2.4.tar.gz を使用。 gtar zxvf postgesql-8.2.4.tar.gz 2. configure と make ./configure --prefix=/www/pgsql (マルチバイトのコードは取り込まれてるそうなので指定しなくてよい) gmake gmake install (root で) 3. postgres ユーザの登録 /usr/sbin/groupadd postgres /usr/sbin/useradd -g postgres -d /www/pgsql postgres 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/pg_ctl start -l /www/pgsql/log/logfile -D /www/pgsql/data -o '-i' 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: data ディレクトリにある postgresql.conf で listen_addresses = '*' と設定して TCP接続を受付ける設定にできる。また、同じところにある pg_hba.conf で host all all 192.168.0.0/16 trust などとして ローカルネットのクライアントからの接続を受付けるようにできる。) 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;