SQL

PostgreSQLのパスワード

2018年10月21日
SQLデータベースの文字コードを変更するため、新しい文字コードUTF-8でデータベースを作って全移動しています。
データベースが変わるので、cronで動かしているバックアップ(ダンプ)やバキューム(最適化)を変更しなくてはいけません。

cronから実行する場合、パスワードを入力できないので、【.pgpass】にIDやパスワード記録して、そこから読み込んで使います。

ホスト名:ポート番号:データベース名:ユーザ名:パスワード
を【.pgpass】に保存してホームディレクトリにアップロード、パーミッションを600にします。

これでcronからバックアップや最適化が可能になります。
副産物で、タームミナルエディタから接続する時も、PHPなどのソースでもパスワードを入力しなくてよくなります。

【.pgpass】には複数のデータベースのパスワードを保存できます。
【*】も使用可能です。どれでもOKの時は使用します。

PostgreSQL 9.3.2文書 - パスワードファイル

例1
*:*:db01:user1:pass1
*:*:db02:user1:pass2

例2
*:*:*:*:pass3

パスワードは平文で保存されますが、パーミッションが600ですし、大丈夫ということなんでしょう。でもファイルが流出したら困りますよね。