PostgreSQLでパスワードを省略する(.pgpass)
ユーザのホームディレクトリに .pgpass というファイルを用意し、
そのファイルに所定の書き方でパスワードを設定すると、psql などでパスワードを聞かれなくする(入力を省略する)ことができる。
書式は次のとおり。
hostname:port:database:username:password
各項目は * で省略可能。具体的には
ユーザー名:SEFUUMI
パスワード:HOGEHOGE
サーバー、ポート、データベース名はどれも可としたばあい、以下のようになる。
*:*:*:SEFUUMI:HOGEHOGE
また、権限は 600 としなければならない。
これらを設定した上でも、fe_sendauth: no password supplied と出るような場合がある。
#たとえば、CGI で 呼び出したような時など
PostgreSQL のバージョンが 8.1 以前の場合には、環境変数 HOME の指定が無い可能性がある。
環境変数 HOME に .pgpass をおいたフォルダを指定すればよい。
(逆に、既に HOME が設定されていたときには、HOME で指定された場所に .pgpass を置く)
PostgreSQL 8.1 以降では、getpwuidを用いて、実効ユーザIDから HOME を求める方法に変更されているらしいので、こういう問題はなさそうです。
関連記事