我有以下 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 告诉您哪个文件是正在使用的文件。