2005/3/18
2005/12/16更新
バージョン PostgreSQL 8.0.1 / 8.1
公式サイト http://www.postgresql.org/

PostgreSQLはフリーのオブジェクトリレーショナルデータベース管理システム(ORDBMS)。日本語も問題なく扱え、非常に強力です。

過去のバージョンのインストールについては、こちらからどうぞ。

(2005/12/16追記)PostgreSQL 8.1も同じ手順でインストールできることを確認しました。

展開&コンパイル

現在のバージョンでは普通にconfigureするだけで、日本語が扱え、syslogにも対応しています。普通にconfigureしてmakeします。

$ tar xvfz postgresql-8.0.1.tar.gz

$ cd postgresql-8.0.1

$ ./configure

$ make all

インストール

レグレッションテストをします。

$ make check

問題なければ、suして、make installします。

$ su

# make install

PostgreSQLは、root権限での初期設定、起動ができないので、新たに専用のアカウントを作ります。今回はpostgresというアカウントを作りました。

# /usr/sbin/adduser postgres

データ保存用のディレクトリを作ります。次にpostgresアカウントに移行して、データを初期化します。

# mkdir /usr/local/pgsql/data
# chown postgres:postgres /usr/local/pgsql/data
# su - postgres
[postgres]$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

初期設定

~postgres/.bash_profileに以下を追加します。

export PATH=$PATH:/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"

.bash_profileを再読み込みします。

[postgres]$ source ~postgres/.bash_profile

PostgreSQLサーバを立ち上げます。

[postgres]$ pg_ctl start

データベースを作ります。createdbコマンドの引数を省略するとユーザー名と同じ名前のデータベースが作られます。つまりここでは「postgres」というデータベースを作成しています。また、文字エンコーディングにEUC_JPを指定しています。

[postgres]$ createdb --encoding=EUC_JP

psqlで接続できれば成功です。

[postgres]$ psql
Welcome to psql, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=#

syslogの設定

ログをsyslogに取りたい時の設定方法です。

/usr/local/pgsql/data/postgresql.confのlog_destinationの値を'syslog'に設定します。また、必要に応じて出力する内容をこのファイルで設定します。

log_destination = 'syslog'

また、必要に応じて出力する内容をこのファイルで設定します。例えば全てのクエリーの内容を出力するには、次のように設定します。

log_statement = 'all'

/etc/syslog.confに次の行を追加します。

local0.*        /var/log/postgresql.log

PostgreSQLとsyslogを再起動します。

# /etc/rc.d/init.d/xinetd restart

# su - postgres

[postgres]$ pg_ctl restart

[postgres]$ exit

TCP接続の設定

標準ではUNIXドメインソケットでの接続に限定されており、TCPを使ってのリモート接続が許可されていません。これを許可するようにします。

/usr/local/pgsql/data/postgresql.confのlisten_addressesの値を'*'に設定します。

listen_addresses = '*'

/usr/local/pgsql/data/pg_hba.confファイルで認証設定を行います。とりあえず簡単にローカルネットワーク(192.168.0.0/24)からのアクセスを許可するには、次の行を加えます。

host    all    all    192.168.0.0/24    trust

PostgreSQLを再起動します。

# su - postgres

[postgres]$ pg_ctl restart

[postgres]$ exit

自動起動の設定

/etc/rc.d/rc.localに以下を追加します。

su postgres -c "/usr/local/pgsql/bin/pg_ctl start"

あるいは、Red Hat Linux系であれば、次のようにします。

# cp contrib/start-scripts/linux /etc/rc.d/init.d/postgres
# chmod +x /etc/rc.d/init.d/postgres
# /sbin/chkconfig --add postgres