psqlをパスワードを聞かれずに実行する方法

[目的]
psql経由でSQLを実行するときに、パスワード入力をせずにワンライナーでおこないたい。


[例えば]
cronでpsqlを実行したい。


[psqlの仕様]
パスワードを指定するオプションがない。

  • W/--password は、パスワード入力を要求させるオプション


[対応]
1..pgpassファイルを用意する
実行したいユーザのHOMEディレクトリに作成する

 cd
 vi .pgpass
 DBサーバ名:ポート番号:DB名:ユーザ名:パスワード

*注意、特定バージョンまでは$HOME環境変数を参照するので、cronに設定する場合は$HOMEにも気を配りましょう。


2.PGPASSWD環境変数を設定する
環境変数の設定はディストリビューションにより異なります。

 cd
 vi .bashrc
 export PGPASSWD=パスワード


[懸念]
これらの対応をする場合は、pg_hba.confの認証方式を"TRUST/PASSWORD"以外に設定しないと、そのまま見えてしまいます。
セキュリティを考慮して設定しましょう。