LoginSignup
7
7

More than 5 years have passed since last update.

psql -U postgresで接続できないとき

Last updated at Posted at 2018-10-06

問題

  • DBを作成しようとしていたが、 $ psql -U postgres でpostgresに接続できない

こうなる

[vagrant@localhost hoge]$ psql -U postgres
psql: FATAL:  Peer authentication failed for user "postgres"

解決策

  • pg_hba.confをいじって、trust認証に変更
  • postgresql再起動後、接続できるようになった!

before

# "local" is for Unix domain socket connections only
local   all             all                                     peer

peertrust

after

# "local" is for Unix domain socket connections only
local   all             all                                     trust

その他


以下、追記(2018.10.9)

trust認証について

参考

trust認証が指定されるとPostgreSQLは、サーバに接続できる全ての人に対して (データベーススーパーユーザさえも)その人が指定する任意のデータベースユーザ名としてのアクセス権限が付与されていると想定します。
trust認証はユーザが1人のみのワークステーション上でローカル接続を行う場合は適切であると同時に非常に便利です。 複数ユーザが存在するマシン上では一般的に適切ではありません。

今回は自分の開発環境における話だったのでtrust認証にしています。

Peer認証について

参考

Peer認証とは、カーネルからクライアント上のシステムユーザ名を取得し、PostgreSQLデータベースユーザと同一である場合のみ接続が許可される仕組みです。 つまり、Postgresql内のユーザーとUNIXユーザで、ユーザー名が一致してさえいれば認証情報なしでログイン出来てしまう仕組みです。

今回接続できなかった理由です。
unixユーザ vagrant としてPostgresqlに接続しようとしていましたが、Postgresql内のユーザに vagrant が存在していなかったため接続できなかったと考えられます。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7