LoginSignup
11
12

More than 3 years have passed since last update.

postgresにログインできないときの対処方法(peer認証エラー、パスワード忘れ)

Posted at

Postgreでパスワードがわからんぞ!
なんかpeer認証エラーなるものがでてるぞ!

ってときに対応した内容をまとめたメモです。

環境

  • Vagrant 2.1.2
  • CentOS 7.5
  • PostgreSQL 11.7

Postgresにログインできない!?

Postgresをインストールしてログインしてみようとしたらできない。peer認証ってなんやねん。

$ psql -U postgres
psql: FATAL:  ユーザ "postgres" で対向(peer)認証に失敗しました

権限ファイルの書き換え

調べてみたら、権限ファイルがおかしいとのこと。
pg_hba.confというファイルを探しましょう。

私の環境では、下記の場所にありました。
/var/lib/pgsql/11/data/pg_hba.conf

このファイルを編集します。
編集する際はsu(スーパーユーザー)でログインするか、sudoコマンドで編集してください。

するとファイルの下部にこんな記述があるはずです。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer

このpeerという表記をpasswordに変更します。こんな感じ。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     password

そしたらポスグレを再起動します。

$ sudo /etc/rc.d/init.d/postgresql-9.3 reload

$ /usr/local/bin/pg_ctl reload

でPostgresが再起動されるはずなんですが、私の場合はうまくいかず、Vagrantから再起動しました。。

パスワードを忘れた!

ほいなら、あとはログインするだけです。

$ psql -U postgres
ユーザ postgres のパスワード: 
psql: FATAL:  ユーザ"postgres"のパスワード認証に失敗しました

………うん。パスワードがわからん。。。くそう。

パスワードリセット

パスワードがわからないとなんともできないので、パスワードをリセットします。

さっきの権限ファイル(pg_hba.conf)を今度はtrustに変更します。で、また再起動。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust

そうすると、こんな感じでパスワードなしでpostgreログインできます。

$ psql -U postgres
psql (11.7)
"help" でヘルプを表示します。

\passwordコマンドで、パスワードを変更します。

postgres=# \password
新しいパスワードを入力してください: 
もう一度入力してください: 

そうしたら、Postgreを抜けて、またpg_hba.confファイルをパスワードありの設定に戻して、再起動です。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     password

そしたら、ちゃんとパスワード聞かれて、ポスグレにログインできました。

$ psql -U postgres
ユーザ postgres のパスワード: 
psql (11.7)
"help" でヘルプを表示します。

postgres=# 

意外と面倒だった。

11
12
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
11
12