【PostgreSQL】psqlでパスワードを省略する

■ はじめに

意外とpsqlでパスワードを省略することが多く、
AWS CodeBuildでも使用しそうなので、メモしておく

目次

【1】Linux
 1)~/.pgpassに入れる方法
 2)環境変数「PGPASSWORD」に入れる方法
【2】Windows

【1】Linux

方法は2つ。

1)~/.pgpassに入れる方法
2)環境変数「PGPASSWORD」に入れる方法

【1】~/.pgpassに入れる方法

[1]「~/.pgpass」ファイル作成
[2] 権限を600にする

[1] 「~/.pgpass」ファイル作成

# hostname:port:database:username:password
localhost:5432:sample_db:postgres:password

# echo "localhost:5432:sample_db:postgres:password" > ~/.pgpass
# とかで追加

[2] 権限を600にする

# 権限が600なのでスーパユーザ以外はパスワードがばれない
chmod 600 ~/.pgpass

補足1:「パスワード」以外が「*」で省略可能

# AWS環境などでホスト名がよく変わる場合に便利
*:5432:sample_db:postgres:password

補足2:シェルスクリプトを作成

#!/bin/sh

host_name="localhost"
port="5432"
db_name="sample_db"
user_name="postgres"
user_password="password"

echo "${host_name}:${port}:${db_name}:${user_name}:${user_password}" > ~/.pgpass
chmod 600 ~/.pgpass

補足3:環境変数「PGPASSFILE」

* 「~/.pgpass」を変更したい場合に
 環境変数「PGPASSFILE」で指定したファイルでもできるらしい

https://qiita.com/nanan/items/f56df8f3706bf4eeed0d

2)環境変数「PGPASSWORD」に入れる方法

export PGPASSWORD=password

使用上の注意
https://www.postgresql.jp/document/8.1/html/libpq-envars.html

より抜粋
~~~~~~~~~~
この環境変数は、
セキュリティ上の理由(いくつかのオペレーティングシステムでは
root以外のユーザがpsコマンド経由で環境変数を見ることができるため)から
現在では推奨されていません。
~~~~~~~~~~

=> psコマンドについては、以下の関連記事を参照のこと。

ps コマンド ~ プロセス一覧の表示 ~
https://dk521123.hatenablog.com/entry/2018/02/02/181500

【2】Windows

Linuxの「1)~/.pgpassに入れる方法」とほぼ同じ
ファイルパス・ファイル名が違うだけ。

%APPDATA%\postgresql\pgpass.conf
https://qiita.com/t15/items/e89eea47b9d2e83c42ac

# フォルダ「postgresql」がない場合は自分で作成
# hostname:port:database:username:password
localhost:5432:sample_db:postgres:password

参考文献

https://kaede.jp/2015/10/27002723.html
https://qiita.com/met_ganchan13/items/2af29ba1f6da87199de0
http://www.ksknet.net/postgresql/post_36.html

関連記事

JDBCシェルスクリプトでパースする
https://dk521123.hatenablog.com/entry/2020/03/24/223323
ps コマンド ~ プロセス一覧の表示 ~
https://dk521123.hatenablog.com/entry/2018/02/02/181500