psql:致命的:ユーザーのピア認証に失敗しました


12

Ubuntu 15.10にPostgreSQL 9.4をインストールしました。

  1. 私はユーザーを作成しました createuser -P myuser
  2. 私はデータベースを作成しました createdb -O myuser mydatabase
  3. 編集pg_hba.confして追加しましたlocal mydatabase myuser md5
  4. 私はPostgreSQLを再起動しました sudo service postgresql restart

ユーザーmyuserはPostgresSQLユーザーのみで、Ubuntuにはユーザーアカウントがありません。

でデータベースに接続しようとすると、psql -W mydatabase myuserで失敗しpsql: FATAL: Peer authentication failed for user "myuser"ます。

PostgreSQLが実行中…

 postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Thu 2016-03-03 09:53:00 CET; 9min ago
  Process: 22219 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 22219 (code=exited, status=0/SUCCESS)

Mar 03 09:53:00 SERVER01 systemd[1]: Starting PostgreSQL RDBMS...
Mar 03 09:53:00 SERVER01 systemd[1]: Started PostgreSQL RDBMS.

...そしてリスニング。

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:postgresql    *:*                     LISTEN
tcp6       0      0 localhost:postgresql    [::]:*                  LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     151534   /var/run/postgresql/.s.PGSQL.5432

ユーザーmyuserを使用してデータベースmydatabaseに接続するにはどうすればよいですか?

回答:


16

数日前からのフレッシュインストールでは、私の2行目pg_hba.conf

local   all             all              peer

これはあなたの接続の試みを失敗させるものだと思います。

ここではルールの順序が重要です。アクセス方法、ユーザー名、データベース名、ソースIP範囲に一致する最初のルールが考慮されます。失敗した場合、2回目の試行は行われないため、接続試行は失敗する可能性があります。または、ドキュメントに記載されているとおり:

「フォールスルー」または「バックアップ」はありません。1つのレコードが選択され、認証が失敗した場合、後続のレコードは考慮されません。一致するレコードがない場合、アクセスは拒否されます。

解決策は簡単です。peer認証を使用しない場合は上記の行を削除するか、特定のルールをこのルールの上に移動します。


行を移動しました。
Daniel

「md5」認証を使用してパスワードを保存して、何度も入力する必要がないようにするにはどうすればよいですか?
SK

3

最初に、pg_hba.confのmyuserユーザーにアクセス権を付与していることを確認します。例えば:

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

または、次のIPV4(および使用する場合はIPv6)に対する他の権限行:TYPE DATABASE USER ADDRESS METHOD

このチェックの後、次のようにpsqlを実行します。

psql -h localhost -U myuser mydatabase

次に、要求されたプロンプトで、ユーザーのパスワードmyuserを入力します。


1
そしてもちろん、ピア認証を削除します。
Alvaro Neto 2016年

リモート接続を許可するようにインスタンスを更新し'*'ましたhost all all 0.0.0.0/0 md5。リスンアドレスが設定され、ルールが追加されました。ピア認証を削除する必要はありませんでした。ちょうど-h localhostparamで動作しました。ストックインストールの設定に触れる必要がない可能性が最も高いため、ベストアンサー。
マークカーペンターJr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.