[pgsql-jp: 38374] Re: FATAL: role "daemon" does not exist ?
Norio Suzuki
suzuki @ tricorn.co.jp
2007年 5月 7日 (月) 18:53:18 JST
鈴木です。
At Mon, 07 May 2007 09:18:52 +0900,
Tom wrote:
>
> apache 1.3.27 + PHP 4.4.6 で、Webからデータベースを更新する
> ユーザとして nobody を事前に作っておいて、問題なく使えていました。
>
> 今回、実験的に httpd 2.2.4 + php-5.2.2 という組合せにしてみて
> 今まで使ってきたデータベースの動作確認をしてみたところ、
> FATAL: role "daemon" does not exist と叱られました。
httpd 2.2.4 の起動ユーザが daemon になっていませんか?
httpd.conf の User 設定を確認してみてください。
動かしているスクリプト次第ではありますが、おそらく次のようなことになっ
ていませんか?
------------------------------------------------------------------------
■apache 1.3.27 + PHP 4.4.6
apache 1.3.27 [システムのユーザ nobody で起動]
↓
PHP スクリプト [PostgreSQL 接続時にユーザ指定なし(= システムのユーザ nobody で接続)]
↓
PostgreSQL 8.2.4 [PostgreSQLのユーザ nobody にアクセス許可]
------------------------------------------------------------------------
------------------------------------------------------------------------
■httpd 2.2.4 + php-5.2.2
httpd 2.2.4 [システムのユーザ daemon で起動]
↓
PHP スクリプト [PostgreSQL 接続時にユーザ指定なし(= システムのユーザ daemon で接続)]
↓
PostgreSQL 8.2.4 [PostgreSQLのユーザ nobody にアクセス許可]
------------------------------------------------------------------------
→ PostgreSQL のユーザ daemon の設定がないのでアクセス拒否
> deamon を作って、nobody の変わりとして、データベースを
> 作り直すと正常に動作しましたが、この辺りどういう事情があり、
> daemon でないとダメなのか、疑問に思いました。
「daemon でないとダメ」ということはありません。
・httpd 2.2.4 をユーザ nobody で起動して良いのであれば、
PostgreSQL 側は特にいじらなくても済む。
・httpd 2.2.4 をユーザ daemon で起動する必要があれば、
PostgreSQL 側の設定を変える。
・PHP スクリプト内で、PostgreSQL ユーザの nobody として接続すれば、
PostgreSQL 側は特にいじらなくても済む。
といった選択ではないでしょうか。
;; ---------------------------------------------------------
;; 鈴木則夫 <suzuki @ tricorn.co.jp>
;; トライコーン株式会社 http://www.tricorn.co.jp/
pgsql-jp メーリングリストの案内