0
0

More than 3 years have passed since last update.

PostgreSQLのクライアント認証がtrust設定なのに認証を要求される

Last updated at Posted at 2020-04-22

はじめに

PostgreSQLのpostgresユーザのパスワードを忘れてしまったので、こちらを参考にパスワードを再設定しました。しかし、クライアント認証をtrust設定にしてもパスワードを聞かれ、ローカルループバック経由でログインできません。
その原因を解決し、ログインするまでをまとめます。

対象読者

  • PostgresSQLのクライアント認証がtrust設定なのに、認証を要求またはアクセス拒否される人

環境

  • PostgreSQL 10.12
  • Windows 10
  • ネットワークアダプタのインターネット プロトコル バージョン6は、チェックオフ

ハマった事象

変更前のpg_hba.confは以下になります。

pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

IPv4ローカルループバックアドレス経由でアクセスするので、その認証設定をtrustに変更します。

pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 md5

これでログインできると思ったら、パスワードを聞かれてログインできない!

コマンドプロンプト
C:\Users\xxxxx>psql -U postgres
ユーザー postgres のパスワード:

解決方法

IPv6ローカルループバックアドレスの認証設定をtrustに変更します。

pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 trust

原因究明

ローカルからログインできるようになりましたが、原因が気になったので調べてみました。
原因は、IPv4のローカルループバックアドレス経由でアクセスしていると思っていたら、IPv6のローカルループバックアドレス経由でアクセスしていたことでした。

IPv4、IPv6どちらか確認するには、localhostに対してpingを実行します。こちらを参考にしました。

IPv6をIPv4より優先する環境で実行すると、以下のようになります。

コマンドプロンプト
C:\>ping localhost

ARC09 [::1]に ping を送信しています 32 バイトのデータ:
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms

どうしてIPv6のローカルループバックアドレスにアクセスするの?

ネットワークアダプタのIPv6をチェックオフにしても、IPv6が完全に無効になるわけではない。また、IPv6の優先度がIPv4のそれより高く設定されていることのようです。
こちらが、非常に参考になりました。

最後に

IPv4、IPv6に気を付けないと、別のミドルウェアのクライアント認証でもハマるかもしれない。
緩めた認証は、必要がなくなったら締めなおしましょう!

最後までお読みいただきありがとうございます。何かのお役に立てたら幸いです。

参考文献

0
0
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
0
0