[pgsql-jp: 35251] .pgpass をPHPに使わせたいのですが

Shindo shindo @ atsystem.jp
2005年 4月 14日 (木) 20:36:00 JST


お世話になります。進藤と申します。

クライアント認証を設定したDBを、PHPのプログラムからパスワードを
.pgpassに設定してアクセスしたいのですが...

以下の 1) や 2) の様子から PostgreSQLは、実行ユーザーのホーム
ディレクトリの.pgpass を見に行っていると思うのですが、DB所有者の
DBアカウントとOSのユーザアカウントが関連しない場合に、
PostgreSQLはどこを見に行くのでしょうか?


1)/home/shindo/.pgpass を準備して shindo として
  $ psql shindo
  を実行するとパスワードなしてアクセスできるのを確認しました。

2)Apacheの実行ユーザーをshindoにすると PHPプログラムから
  パスワードなしてアクセスできるのを確認しました。

3)Apacheの実行ユーザーnobodyのホームディレクトリを
  /etc/passwd の nobody の行で指定したディレクトリ(/etc/nobody)
  に .pgpass を置いてPHPプログラムからデータベースにアクセスす
  ると失敗します。
  /home/nobody/.pgpass の所有者は nobody でファイルの
  パーミッションは 600 です。
  この時、/home/shindo/.pgpass も置いてあります。

4)実際のプログラムでは、PHPからPHPLIBを使ってアクセスしている
  のですが、より簡略化して
  pg_connect (" dbname='shindo' user='shindo'");
  とアクセスしても失敗します。
  また、
  pg_connect (" dbname='shindo' user='shindo' password='xx'");
  とパスワードを指定した場合は、当然ですがアクセスできます。

環境:
 PostgreSQL Version 7.4.6
 PHP Version 4.3.10
 Apache/1.3.33
 FreeBSD 5.3-RC1

pg_hba.conf:
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local   shindo  shindo                                           md5
host    shindo  shindo  127.0.0.1   255.255.255.255   md5
local   shindo  all                                                
reject 
host    shindo  all       127.0.0.1   255.255.255.255   reject 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 進藤寿則@アットシステム   _/_/
 e-mail shindo@atsystem.jp     _/




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