メモ:psqlバッチ自動実行のための設定

psqlを書いたバッチを自動実行するために、設定ファイルからパスワードを与える方法。

テキストファイルに、ホスト名、ポート番号、DB名、ユーザ名、パスワードを書く。Windows Server環境の場合は、pgpass.conf。

.pgpassの権限は、グループ、他への全てのアクセスを拒否しなければなりません。 これはchmod 0600 ~/.pgpassといったコマンドによって行います。 権限をこれよりも緩くすると、このファイルは無視されます。 (しかし現在、Microsoft Windowsではこのファイルの権限は検査されません。)

パスワードファイル:PostgreSQL 8.2.0文書

上の記述とは関係ないと思うが、指定のフォルダにpgpass.confを置くと、稼働中のPostgreSQL本体のプロセスがファイルを掴みにいってしまい、バッチを実行してもファイルを開けないというエラーが出る場合がある。

解決するには、pgpass.confのACLを変更する。バッチ実行ユーザ以外のグループやユーザからのフルアクセスを拒否する。

なお、グループからの読取りを拒否しても、そのグループにバッチ実行ユーザが入っていた場合、バッチ実行ユーザから読取りを許可しても、拒否の設定の方が優先されるハズ。Administratorsグループなどに属さないユーザで、バッチを実行する必要がある。