[pgsql-jp: 27522] Re: postmasterが起動しない

Takao Kato sirius @ jp.fujitsu.com
2002年 10月 3日 (木) 16:48:24 JST


加藤@川崎です。

> initdb実行時のアカウントでないと、postgresスーパユーザでも書き込めな
> いの状態になってしまうのでしょうか?(教えて、で申し訳ありません!)

え〜と、通常postgresのスーパユーザ(普通はpostgresですね)でデータベース
を生成する必要があります。これは『ものすごく大雑把』に書くと、本来の動
作としてpostgresと言うUNIXアカウントの持ち物にDB利用者はDBにアクセスす
ることになります。

しかし、もし、(UNIXの)rootでinitdbしてしまうと /usr/local/pgsql/data 
の下は root の持ち物となり、しかも、/usr/local/pgsql/data の下のreadパー
ミッションそのものがroot以外は落されてしまい(chmod -R 700)、postgresで
はアクセスできなくなります。その状態で、

# su - postgres
% pg_ctl start

と実行しても postmaster.pid を書き込む場所($PGDATA)が root の持ち物で
すから postgres(と言うUNIXアカウント)では書き込めません。これはUNIXの
動作としての問題です。

仮に$PGDATA直下だけwriteパーミンションをあげても、その後データベース作
成(createdb)しても失敗するだけ(再帰的に書き込み権がたたないと駄目)なの
で、「もしインストールしたばかりでデータベース等作成していない状態であ
る」なら $PGDATA をザックリ削除して initdb をpostgresでやり直し他方が
良いと思います。

あるいは $PGDATA で違う場所指定して initdb を postgres で実行するかで
すね。
----
加藤@川崎



pgsql-jp メーリングリストの案内