プロが教える店舗&オフィスのセキュリティ対策術

WEBサーバー「A」とDBサーバー「B」が存在しています。
この時、「A」から「B」への接続をCGIからpsqlをコールすることで行っています。
認証についてはpgpassを利用しているつもりなのですが、
どうもこれが有効になっていないようで、接続ができません。
どうやったら接続できるようになるでしょうか??
              皆様のお力をお貸し願えれば幸いです。

pgpassはユーザー「X」が所有者となっておりパーミッションは「600」となっています。また「X」の$HOMEに置かれています。

また、同様のテスト環境が存在するのですが、そちらでの接続はうまくいっています。
もしかしてテスト環境でもpgpassが効いてるわけではなく、別の方法で接続が確立されているということもあるでしょうか?

環境は以下の通りです。
本番サーバー
 Linux [サーバー名] 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686 i686 i386 GNU/Linux
本番DB
 Linux [サーバー名].in.[ドメイン] 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686 i686 i386 GNU/Linux
テストサーバー
 Linux [サーバー名] 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686 i686 i386 GNU/Linux
テストDB
 Linux [サーバー名] 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686 i686 i386 GNU/Linux

 Perlは v5.8.0 (perl -v にて確認)
 PostgreSQLは 7.4.7 (psql --version にて確認)

A 回答 (2件)

推測ですみませんが。

。いろいろやってみましょう。

試しに

1)CGIをキックしたユーザのホームディレクトリに.pgpassをおいてみてはどうですか??

2)psqlで接続する-Uで指定したユーザのホームディレクトリに.pgpassをおいてみてはどうですか??

この回答への補足

> 1)CGIをキックしたユーザのホームディレクトリに.pgpassをおいてみてはどうですか??
 CGIをキックするユーザーとなるとアパッチで設定されているnobodyというユーザーになるようなのですが、
 このユーザーのホームは「/」となっているようです。
 一応そこにおいて試してみました。(所有者root パーミッション600)
 ・・・結果は失敗でした。

> 2)psqlで接続する-Uで指定したユーザのホームディレクトリに.pgpassをおいてみてはどうですか??
 やはりダメでした。
 ただ、テストサーバーではこの場所に置かれています。

補足日時:2005/11/10 18:19
    • good
    • 0

そうですかぁ。

。。

> 1)CGIをキックしたユーザのホームディレクトリに.pgpassをおいてみてはどうですか??
 CGIをキックするユーザーとなるとアパッチで設定されているnobodyというユーザーになるようなのですが、
 このユーザーのホームは「/」となっているようです。
 一応そこにおいて試してみました。(所有者root パーミッション600)
 ・・・結果は失敗でした。

> 2)psqlで接続する-Uで指定したユーザのホームディレクトリに.pgpassをおいてみてはどうですか??
 やはりダメでした。
 ただ、テストサーバーではこの場所に置かれています。

本当に憶測ですみませんが、-Uで指定したユーザのホームディレクトリに.pgpassを配置したあと、PostgreSQLを再起動してもだめですかねぇ・・・。
    • good
    • 0
この回答へのお礼

とりあえず以下のような方法で解決しましたので、ひとまず質問は締め切らせていただきます。
いろいろとアドバイスいただきありがとうざいました。

my $command = 'echo [パスワード] | psql -h [ホストIP] -U [ユーザー] -c "select * from test" |'

お礼日時:2005/11/10 18:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!