PostgreSQLの設定

PostgreSQLでDBサーバを構築する。LOCUS社の「Linux/FrssBSD SQLデータベース構築入門(PostgreSQL6.4.2+PHP3編)」という本を参考にした。
RedHat Linux6.1にパッケージされてるPostgreSQLは6.5.2なのでディレクトリ構成などがソースからインストールした場合と違うためちょっと困ったが、なんとかなった。
ここでは、この本を中心に説明する。

1.始める前に

PostgreSQLはLinuxインストール時にカスタムで選択しているので、インストール済みである。PostgreSQLを触るにはrootユーザではなくpostgresユーザを使う。PGSQLに限らず、DBサーバは通常、rootとは別にDBサーバを管理するユーザを必要とする。別にrootでもいいんだろうけど、実際、別のユーザを使ったほうがいろいろと便利である。だから、DBサーバに関することはほとんどデータベース用管理ユーザを用意し、そのユーザで作業を行う。
rootで/etc/passwdファイルを見るとpostgresというユーザが作成されていることが分かる。ということで、実際に行うのは環境設定からだ。

2.postgresユーザの設定

postgresユーザでログインしたいのだが、パスワードが分からないのでログインできない。まずrootになり、postgresユーザのパスワードを変更する。

# passwd postgres

設定後、postgresでログインする。
ログインすると、プロンプトがBASH$になる。pwdコマンドでホームディレクトリを調べると/var/lib/pgsqlであることが分かるが、ls -alコマンドで分かるとおり、.bash*ファイルが存在しない。パスすら通っていないわけである。
これでは不便なので、他のユーザのホームディレクトリにある.bash*ファイルを/usr/lib/pgsqlディレクトリにコピーし、ログインしなおすと、普通のユーザと同じようにログインできるようになる。

3.環境変数の設定

PostgreSQLを動作させるために、postgresユーザの環境変数の設定を行う。

1.環境変数の設定

環境変数の設定は、postgresユーザとしてログインしたときに自動実行される.bash_profileで行う。ホームディレクトリからvi.bash_profileを開き、次の行を追加する。

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

参考書では、先頭に「export PATH="$PATH":/usr/bin」という行があるが、マシン起動時に既にパスが通っていたので、設定しなかった。
また、PGSQLのホームディレクトリも参考書では「/usr/local/pgsql」になっているが、これは自分でデフォルトの設定でコンパイル・インストールした場合のパスであり、RedHat Linuxをインストールするときに一緒にインストールした場合はこちらのパスになってた。このパスを探すのに苦労しました。(>_<)
編集後は、sourceコマンドで変更を反映させる。

# source .bash_profile

ちなみに、ログインしなおしてもOK。

2.データベースを初期化

envコマンドで環境変数が正しく設定されていることを確認したら、一度だけ「データベースの初期化」を行う。

# initdb

なお、環境変数$PGDATAの設定を変えることにより、任意のディレクトリやハードディスクにデータベースのデータを格納することができる。サーバの付加分散を考えるなら、別のハードディスクに作成したほうがいいだろう。
(今気が付いた・・・)
その場合、作成する場所にdataディレクトリを作るためのパーミッションを設定する。

4.PostgreSQLの起動

PostgreSQLを起動するには次の設定が必要である。

1.起動前準備

PostgreSQLはデフォルトの設定では、クライアント(他のホスト)からデータベースへのアクセス要求があっても一切答えないようになっている。これでは動的なwwwページが作れないので、アクセス要求にこたえるように設定を変更する。
pg_hba.confは初期状態ではReadOnlyになっているため、パーミッションを変更する。

# chmod 600 /var/lib/pgsql/datapg_hba.conf

次にこのファイルをviで開き、次の行を探す(似たような行が複数あるので注意!)。

#host all 0.0.0.0 0.0.0.0 trust

この行のコメントをはずして、保存する。

2.postmasterを起動

次のようにコマンドを実行すれば、postmasterが起動する。

# postmaster -S -i

サービスが起動しているかどうかを確認するには、psコマンドを使う。

# ps x

出てきた一覧の中に/usr/bin/postmaster -S -iという行があればOK。

3.サーバ起動時にpostmasterを起動する。

サーバを再起動するたびにいちいち手動でpostmasterを起動するのは面倒なので、postmasterを起動するスクリプトをサーバの起動時に自動的に実行するように設定する。
rootになり、/etc/rc.d/rc.localファイルに次のスクリプトを追加する。

rm /tmp/.s.PGSQL.*
su - postgres -c "/usr/bin/postmaster -S -i"

サーバを再起動し、postmasterが起動しているかどうかを確認しよう。

5.PostgreSQLユーザの登録

クライアントマシンからODBC経由でPostgreSQLのデータベースにアクセスするには、データベース利用ユーザを作成しなければならない。データベース利用ユーザはLinuxのユーザとは別で、PostgreSQLのユーザデータベースに登録しなければならない。
PostgreSQLのユーザデータベースへの登録はpostgresアカウントでログインし、createuserコマンドを使って行う。この辺は参考書のとおりで問題なくできた。

これで、PostgreSQLが使えるようになった。後はPostgreSQL上にデータベースを作成し、WebやAccessなどから利用するだけである。これらの設定は別ページで解説する。


[ TOP ]