Postgresql:能够使用 psql 进行身份验证但无法使用 pg_dump 进行备份

Postgresql: Able to authenticate using psql but unable to backup with pg_dump

我在备份 PostgreSQL 数据库时遇到问题。当我运行以下命令时:

psql -d cdb -U "$(whoami)"

结果:

cdb=# \c
You are now connected to database "cdb" as user "gub".

所以没问题。然而当我 运行

pg_dump -h localhost -p 5432 -U "$(whoami)" -d cdb -w -C -F p -b -f /home/"$(whoami)"/cdb.sql

我收到以下错误消息:

pg_dump: error: connection to database "cdb" failed: fe_sendauth: no password supplied

我有以下身份验证设置:

cdb=# select * from pg_hba_file_rules;
 line_number | type  |   database    | user_name  |  address  |                 netmask                 | auth_method | options | error 
-------------+-------+---------------+------------+-----------+-----------------------------------------+-------------+---------+-------
          89 | local | {all}         | {postgres} |           |                                         | peer        |         | 
          94 | local | {all}         | {all}      |           |                                         | peer        |         | 
          96 | host  | {all}         | {all}      | 127.0.0.1 | 255.255.255.255                         | md5         |         | 
          98 | host  | {all}         | {all}      | ::1       | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | md5         |         | 
         101 | local | {replication} | {all}      |           |                                         | peer        |         | 
         102 | host  | {replication} | {all}      | 127.0.0.1 | 255.255.255.255                         | md5         |         | 
         103 | host  | {replication} | {all}      | ::1       | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | md5         |         | 

我不确定为什么这不起作用,因为 auth_method peer 不需要密码。有人可以帮忙吗? postgresql.conf 未更改,设置为:psql (PostgreSQL) 12.9 (Ubuntu 12.9-0ubuntu0.20.04.1)

我的目标是无需密码即可备份。

使用 psql,您正在通过域套接字使用本地连接,因为您没有指定 -h localhost,所以第一行或第二行 pg_hba.conf 适用,您可以无需密码即可连接。

对于 pg_dump,您使用的是 TCP 连接,第三或第四行适用,您必须提供密码。

省略 -h localhost!