La Solución rápida
El problema es que está tratando de llevar a cabo la autenticación local peer
en función de su nombre de usuario actual Si desea utilizar una contraseña, debe especificar el nombre de host con -h
.
pg_dump dbname -U username -h localhost -F c
Explicación
Esto se debe a lo siguiente en su pg_hba.conf
local all all peer
host all all 127.0.0.1/32 md5
Esto le dice a Postgres utilizar peer
autenticación para los usuarios locales que requiere la postgres nombre de usuario para que coincida con su sistema actual nombre de usuario La segunda línea se refiere a las conexiones que usan un nombre de host y le permitirán autenticarse con una contraseña a través del método md5
.
Mi configuración preferida Config
NOTA: Esto sólo se debe utilizar en estaciones de trabajo de usuario único. Esto podría conducir a una gran vulnerabilidad de seguridad en una máquina de producción o multiusuario.
Al desarrollar en una instancia de postgres local me gusta cambiar mi método de autenticación local a trust
. Esto permitirá la conexión a postgres a través de un socket de Unix local como cualquier usuario sin contraseña. Se puede hacer simplemente cambiando peer
arriba a trust
y recargando postgres.
# Don't require a password for local connections
local all all trust
que "... la autenticación entre pares ..." parte del mensaje de error significa que no está utilizando [autenticación de contraseña] (http://www.postgresql.org/docs/current/static/auth- methods.html # AUTH-PEER) en absoluto. –