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」パスワードを挿入することを期待していましたが、何も得られませんでした。
何が悪いのですか?この問題を解決するにはどうすればよいですか?
ありがとう
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
)がトリガーされます。