Postgresql

psql 沒有提示我輸入密碼,然後拒絕訪問

  • July 15, 2021

我在 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 | {}

對等身份驗證

這意味著它使用的是 unix 套接字連接,並且 unix 套接字的連接設置為peer使用pg_hba.conf. 它只是檢查 unix 使用者名是否與請求的 postgres 使用者名相同,而不關心密碼。

如果您想要密碼驗證,請改用md5auth in pg_hba.conf

請參閱手冊

PostgreSQL 在 SQL 配置和配置文件之間拆分身份驗證的方式絕對令人困惑,因此您並不孤單。能夠為使用者設置密碼,但在某些情況下會忽略該密碼並在其他情況下使用該密碼,這需要一些時間來適應。一旦你理解了這個系統,它就很有意義,但它絕對不是可發現的和直覺的。

引用自:https://dba.stackexchange.com/questions/185546