MX Linux19でpeer認証の関係(PostgreSQL “対向(peer)認証に失敗しました” エラー)でpsqlログインできない時の対処法
Windowsの文字コードやロケール周りでPostgreSQLが地獄なので、Linuxにすれば
違うかなと思っていたら、OSのパッケージマネージャ、たとえばMXなどDebian系
のディストリビューションでapt install postgresqlでインストールした場合は、
データベースクラスタの作成(initdb)までインストールの際、設定ファイル
/etc/postgresql/11(version)/main/pd_hba.conf まで作成するが、Windowsインストー
ラの時みたいに明示的にインストールウィザード内でパスワードを設定しなかった
ので、デフォルトのスーパーユーザpostgresのパスワードが分からなくて、いろいろ
試していたらタイトルのエラーが発生しログインできなかったので、調べてみた
ことをまとめてみる(Φω|
[エラーの原因]
設定ファイル /etc/postgresql/11/main/pg_hba.conf のMETHOD(auth_method)が
peerになっている。Peer認証ではUNIXのユーザ名と一致していないとエラーになる。
(Peer認証はカーネルからシステムのユーザ名を取得し、PostgreSQLデータベース
ユーザと同一である場合のみ接続が許可される仕組み)
[解決策]
1. Peer認証で接続するためにpostgresユーザ(OS)でログインできるように、
インストール時に作成されるユーザ postgresにパスワードを設定。
$ sudo passwd postgres
2. その後、postgresユーザになりpsqlに接続。
3. psglに接続後、下記SQLクエリーを実行。
postgres=# ALTER USER postgres with encrypted password '1で設定したパスワード';
ALTER ROLE
postgres=#
4. /etc/postgres/11/main/pg_hba.conf の下記設定行のpeerをmd5に編集し保存。
(ex) before
local all postgres peer
(ex)after
local all postgres md5
5. PostgreSQLを再起動。
6. 設定したパスワードで再度、psqlに接続。
※エラーが発生せず、ログインできてプロンプトが出ればOK。
[参考サイト]