PostgreSQL
フリーのデータベースである。フリーであるがかなり高度なことができる。
また、難易度が高いことから蔵人向けという話もある。
ソース
postgresql-7.4.5.tar.gz
パッチ
なし
ユーザーを作る
groupadd postgres
useradd postgres -g postgres -d /usr/local/pgsql
インストール
su - postgres
tar xvfz postgresql-7.4.5.tar.gz
./configure --prefix=/usr/local/pgsql \
--enable-multibyte=EUC_JP \
--enable-syslog
make all
make install
コマンドが使えるようにする
.bashrc に以下を追加します。
PATH="$PATH":/usr/local/pgsql/bin
フルパスで指定しなくてもコマンドを入力するだけで実行できるようになります。
環境変数の設定
|PGLIB|/usr/local/pgsql/lib のある場所|
|PGDATA|データベース領域のある場所|
|LD_LIBRARY_PATH|PostgreSQLのクライアント用shared ライブラリの置いてある場所|
|MANPATH|PostgreSQLのオンラインマニュアルの置いてある場所|
[bashの場合]
.bashrc に以下を追加します。
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"
データベースの初期化と起動
データベースを初期化します。これは一度だけ実行すれば良いです。
$ initdb
これで /usr/local/pgsql/data/ 以下にデータベース領域が初期設定されます。
デーモンの起動
次にpostgres デーモン(postmaster)を立ち上げます。
(rc などのシステム起動用の スクリプトに組み込んでおけば便利です。)
chmod +w /usr/local/pgsql/data/postmaster.opts.default
としてpostmaster.opts.defaultを書き込み可能としてから、適当なエディタで、 postmasterの起動オプションをセットします。一例をあげます。
-S -i
そして、pg_ctl コマンドで postmaster を起動します。
$ pg_ctl -w start
pg_hba.conf の設定
デフォルトでは localhost からの接続は許可されていますが、 remote host からのアクセスは一切できないようになっています。
とりあえずどこからでもアクセスできるようにしたい場合は
/usr/local/pgsql/data/pg_hba.conf の以下のコメントをはずしてください。
#host all 0.0.0.0 0.0.0.0 trust
"trust" のところを "passwd" もしくは "crypt" に代えると、 パスワード認証ができるようになります。
passwd: 普通のファイルにユーザ名とパスワードを 書いておく方法。 詳しくは pg_hba.conf(5)と pg_passwd(1) を御覧ください。
crypt: PostgreSQL のデータベースでパスワードを管理する方法。 詳しくは pg_hba.conf(5)と alter_user(l) を御覧下さい。
regression test
これで一通りインストールが完了ですが、PostgreSQL には regression と呼 ばれる動作を確認するための test suite が附属しています。以下、 regression の手順を説明します(regression を実施するためには、 PostgreSQL のインストールが終っていることが必要です)。
postmaster が動いていなければ立ち上げます。
postgresql.confの設定
/usr/local/pgsql/data/postgresql.conf
上記ファイルを以下のように修正します。
silent_mode = false
↓
silent_mode = on
tcpip_socket = false
↓
tcpip_socket = on
行頭に#が付いている場合は、忘れずに外してください。
PostgreSQLのデーモンプロセス、postmasterを起動します。
$ pg_ctl -w start
Apacheの実行ユーザであるnobodyを、PostgreSQLユーザとして登録します。
「新しいユーザにデータベース作成を許可しますか?」「新しいユーザにユーザ作成を許可しますか?」という質問がされますが、どちらもNo(n)と答えます。
$ createuser nobody
$ pg_ctl -w start
regression 用のディレクトリに移ります。
$ cd /usr/local/src/postgresql-7.0.2/src/test/regress
regression test を実施します。
$ make all runtest
テスト項目毎に ok/fail が出力されます。
README にも書いてありますが、"fail" と出たからと言って、必ずしも 問題がある訳ではありません。たとえば、float8 では、フローティングの 表現とか、エラーメッセージの違いにより fail してしまうことがあります。 また、random では、乱数を使っている
|