PostgreSQLでDBサーバを構築する。LOCUS社の「Linux/FrssBSD SQLデータベース構築入門(PostgreSQL6.4.2+PHP3編)」
という本を参考にした。
RedHat Linux6.1にパッケージされてるPostgreSQLは6.5.2なのでディレクトリ構成などがソースからインストールした場合と違うためちょっと困ったが、なんとかなった。
ここでは、この本を中心に説明する。
PostgreSQLはLinuxインストール時にカスタムで選択しているので、インストール済みである。PostgreSQLを触るにはrootユーザではなく
postgresユーザを使う。PGSQLに限らず、DBサーバは通常、rootとは別にDBサーバを管理するユーザを必要とする。別にrootでもいいんだろうけど、実際、別のユーザを使ったほうがいろいろと便利である。だから、DBサーバに関することはほとんどデータベース用管理ユーザを用意し、そのユーザで作業を行う。
rootで/etc/passwdファイルを見るとpostgresというユーザが作成されていることが分かる。ということで、実際に行うのは環境設定からだ。
postgresユーザでログインしたいのだが、パスワードが分からないのでログインできない。まずrootになり、postgresユーザのパスワードを変更する。
# passwd postgres 設定後、postgresでログインする。
ログインすると、プロンプトがBASH$になる。pwdコマンドでホームディレクトリを調べると/var/lib/pgsqlであることが分かるが、ls -alコマンドで分かるとおり、.bash*ファイルが存在しない。パスすら通っていないわけである。
これでは不便なので、他のユーザのホームディレクトリにある.bash*ファイルを/usr/lib/pgsqlディレクトリにコピーし、ログインしなおすと、普通のユーザと同じようにログインできるようになる。
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ディレクトリを作るためのパーミッションを設定する。
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が起動しているかどうかを確認しよう。
クライアントマシンから
ODBC経由でPostgreSQLのデータベースにアクセスするには、データベース利用ユーザを作成しなければならない。データベース利用ユーザはLinuxのユーザとは別で、PostgreSQLのユーザデータベースに登録しなければならない。
PostgreSQLのユーザデータベースへの登録はpostgresアカウントでログインし、createuserコマンドを使って行う。この辺は参考書のとおりで問題なくできた。これで、PostgreSQLが使えるようになった。後はPostgreSQL上にデータベースを作成し、WebやAccessなどから利用するだけである。これらの設定は別ページで解説する。