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"以外に設定しないと、そのまま見えてしまいます。
セキュリティを考慮して設定しましょう。