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