Postgresql
postgresql 似乎不尊重 pg_hba.conf 配置 - 我該如何診斷?
我有以下 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 告訴您哪個文件是正在使用的文件。