.pgpass で psql 実行時のパスワード入力を省略する

Redshift(PostgreSQL) に psql で接続しようとすると,毎回対話形式でパスワードが聞かれるため、バッチ処理などでワンライナーとして使う場合に困ってしまう.psql のドキュメントを見てもパスワードを指定するオプションはなくて、-p はポートの指定なので注意.

psql ツールを使用してクラスターに接続する - Amazon Redshift

Password for user xxx:

そこで .pgpass の出番!

詳しくは以下のエントリーを参照するとして,.pgpass というファイルにパスワードも含めた接続情報を記載して,実行ユーザのホームディレクトリ直下に置けばOK.パーミッション600 固定なので,忘れずに chmod しておくこと.これで対話なく接続できるようになる.

psql -h ${HOST} -U ${USER} -d ${DATABASE} -p ${PORT}
xxx=> \q

Pgpass/ja - PostgreSQL wiki
psql接続時に対話でパスワードを入力しない - shibainu55日記
PostgreSQLでパスワードを省略する(.pgpass)