postgresql does not seem to respect the pg_hba.conf config - how can I diagnose this?
-
04-03-2021 - |
Вопрос
I have the following 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
With the above I assume host all all 127.0.0.1/32 trust
would allow TCP connections from localhost. However this does not seem to be the case
[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
Where am I going wrong?
Output of 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)
Решение
If you have restarted the database and the contents of the view pg_hba_file_rules
doesn't match your pg_hba.conf file, then you probably have more than one such file, and edited the one which is not being used. If you can connect via another means, you can use show hba_file;
to get PostgreSQL to tell you which file is the one that is being used.
Не связан с dba.stackexchange