web-dev-qa-db-ja.com

psqlがパスワードの入力を要求せず、アクセスを拒否します

Debian LinuxでPostgres 9.4を使用しています。データベースへのアクセス権を持つユーザーcindexを使用してデータベースを作成しました。それでも、コマンドラインでログインしようとすると、パスワードの入力さえ求められません。

myuser@myuserserver:~ $ psql -Ucindex cindex
psql: FATAL:  Peer authentication failed for user "cindex"

ユーザーを有効にするために他に何をする必要がありますか?以下に、すでに設定した権限を示します。

postgres@myuserserver:~$ psql
psql (9.4.13)
Type "help" for help.

postgres=# GRANT SELECT ON ALL TABLES IN SCHEMA cindex TO cindex;
GRANT
postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 cindex    | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =T/postgres          +
           |          |          |             |             | postgres=CTc/postgres+
           |          |          |             |             | cindex=c/postgres
 postgres  | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 |
 template0 | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 cindex    |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
4
Dave

ピア認証

つまり、Unixソケット接続を使用しており、UNIXソケットの接続はpg_hba.confpeer認証を使用するように設定されています。 UNIXユーザー名が要求されたpostgresユーザー名と同じであることを確認するだけで、パスワードは関係ありません。

パスワード認証が必要な場合は、代わりにmd5pg_hba.conf authを使用してください。

マニュアル を参照してください。

PostgreSQLがSQL設定と設定ファイルの間で認証を分割する方法は間違いなく混乱を招くので、あなただけではありません。ユーザーのパスワードを設定できるが、そのパスワードが一部のコンテキストで無視され、他のコンテキストで使用されるようにするには、慣れる必要があります。システムを理解すればそれは理にかなっていますが、間違いなく発見可能で直感的ではありません。

5
Craig Ringer