pg_dumpの実行時にパスワード入力を省略する
pgではpg_dump実行時に必ずインタラクティブなパスワードの入力を求められるのですが、cron jobでのpb_dump実行時に、パスワードの入力を省きたいって感じのことです。どうやらパスワードを渡す方法はないみたいですね。
PostgreSQL公式docのpg_dumpのところ
-w
オプションのところで以下のような記述が。
-w –no-password パスワードの入力を促しません。 サーバがパスワード認証を必要とし、かつ、.pgpassファイルなどの他の方法が利用できない場合、接続試行は失敗します。 バッチジョブやパスワードを入力するユーザが存在しない場合にこのオプションは有用かもしれません。
ふむ、.pgpass
なるファイルがあるのか。
公式doc
.pgpass
というファイルをホームディレクトリに配置することで、pgは勝手にそれをパスワードとして使用してくれるみたいです。
.pgpass
のフォーマットは以下のようにします。
hostname:port:database:username:password
最初の4フィールドに関してはワイルドカードもありみたいです。また、
Unixシステムにおいて、.pgpassの権限はグループ、他者へのアクセスをすべて拒否しなければなりません。 これはchmod 0600 ~/.pgpassといったコマンドによって行います。 権限をこれよりも緩くすると、このファイルは無視されます。
とのことなので、
$ sudo chmod 0600 ~/.pgpass
としておきましょう。
これで、
$ pg_dump -Ft -U USER_NAME -w DB_NAME > BACKUP_FILE
のように-wでパスワードを省略してpd_dumpを実行することができました。わーい