Postgresql

postgresql 似乎不尊重 pg_hba.conf 配置 - 我該如何診斷?

  • July 6, 2020

我有以下 pg_hba.conf:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

有了上面我假設host all all 127.0.0.1/32 trust將允許來自本地主機的 TCP 連接。然而,情況似乎並非如此

[root@XenonKiloCranberry:~]# psql -U postgres
psql (11.7)
Type "help" for help.

postgres=# \q

[root@XenonKiloCranberry:~]# psql -U postgres -h 127.0.0.1
psql: FATAL:  no pg_hba.conf entry for host "127.0.0.1", user "postgres", database "postgres", SSL off

我哪裡錯了?

輸出select * from pg_hba_file_rules

line_number | type  | database | user_name | address |                 netmask                 | auth_method | options | error 
-------------+-------+----------+-----------+---------+-----------------------------------------+-------------+---------+-------
          1 | local | {all}    | {all}     |         |                                         | trust       |         | 
          2 | host  | {all}    | {all}     | ::1     | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | trust       |         | 
(2 rows)

如果您重新啟動了數據庫並且視圖的內容pg_hba_file_rules與您的 pg_hba.conf 文件不匹配,那麼您可能擁有多個這樣的文件,並且編輯了未使用的文件。如果您可以通過其他方式連接,您可以使用show hba_file;PostgreSQL 告訴您哪個文件是正在使用的文件。

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