postgresユーザーにパスワードを設定する

PostgreSQLをyumでインストールしたときに、初期設定では認証部分はOSに紐付いた設定になっています。

pg_hba.conf

local   all             all                                     peer
host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident   

こんな設定です、公式ドキュメントだと

ident

クライアントのオペレーティングシステムにおけるユーザ名をクライアント上のidentサーバに尋ねてユーザ名が要求されたデータベースユーザ名と一致するか検査します。 Ident認証は、TCP/IP接続でのみ使用可能です。ローカル接続が指定されている場合は、peer認証が代わりに使用されます。 詳細は項19.3.6を参照してください。

peer

クライアントのオペレーティングシステムにおけるユーザ名をオペレーティングシステムから取得し、ユーザ名が要求されたデータベースユーザ名と一致するか検査します。 これはローカル接続の時にのみ使用可能です。詳細は項19.3.7を参照してください。    

となっています。 identの方は設定ファイルに書き加えればそのまま使えそうですが、 peerの方はpostgresユーザーにsuでユーザーを切り替えないとログインできないです。

ちょっと使いづらいので、普通にログイン名、パスワードでできるようにします。

# su - postgres
$ psql -c "alter role postgres with password '{password}'" ;
vim pg_hba.conf
---
local   all             all                                     md5
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5   
---

service postgresql restart

これで

psql -U postgres

でパスワードを入力してログインできるようになります。 自動バックアップ時に pg_dump コマンドなどでパスワードを省きたいときは

vim ~/.pgpass
---
localhost:5432:{dbname}:{dbuser}:{password}
---

としておくと省くことが可能です。

postgresql9.3 pg_hbaドキュメント https://www.postgresql.jp/document/9.3/html/auth-pg-hba-conf.html