web-dev-qa-db-ja.com

psql、データベースに接続しようとすると、「psql:FATAL:Peer authentication failed for user」と表示されます。なぜですか?

psql(9.2.23)を実行しているDell Latitude 3540ラップトップでLinux CentOS 7を使用しています。簡単なことをしたいのですが、データベースのユーザー名を作成し、そのユーザー名でログインします。

私のオペレーティングシステムのユーザー名は「davide」で、psqlで作成して使用するユーザー名は「davide3」です。私のラップトップ名は「ラップトップ」です。

PostgreSQLをインストールした後の手順は次のとおりです。

_[davide@laptop ~]$ Sudo su - postgres_

_[Sudo] password for davide:_

_Last login: XXX_

_-bash-4.2$ psql_

psql (9.2.23)

_Type "help" for help._

_postgres=# CREATE USER davide3 WITH PASSWORD 'davide3' CREATEDB CREATEUSER;_

_CREATE ROLE_

_postgres=# \q_

_-bash-4.2$ exit_

logout

次に、ユーザー名「davide3」を使用してデータベースにログインしようとします。

_[davide@laptop ~]$ psql -d postgres -U davide3_

_psql: FATAL: Peer authentication failed for user "davide3"_

ここに問題があります。パスワード挿入メッセージを受け取り、「davide3」パスワードを挿入することを期待していましたが、何も得られませんでした。

何が悪いのですか?この問題を解決するにはどうすればよいですか?

ありがとう

3
DavideChicco.it

CentOSのpg_hba.conf構成ファイルでは、Unixドメインソケットを介した接続はpeer認証を暗示するため、パスワードの入力は求められません。 peerは、OSユーザーがデータベースユーザーと同じ場合にのみ成功します。これは妥当なデフォルトです。

pg_hba.confを編集して、誰でも特定のデータベースまたはすべてのデータベースにdavide3にローカルに接続できることを示すことができます。より一般的には、ケースに最も適したポリシーを使用できます。

ファイルは次の場所に記載されています https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html

または、デフォルトのポリシーを維持して、-h localhostをpsql呼び出しに追加してみてください。これにより、デフォルトのmd5で、パスワードを要求する別の認証ルール(pg_hba.conf)がトリガーされます。

3
Daniel Vérité