[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 メーリングリストの案内