La Solución Rápida
El problema es que está intentando realizar una peer
autenticación local basada en 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 que use peer
autenticación para usuarios locales, lo que requiere que el nombre de usuario de postgres coincida con el nombre de usuario actual del sistema. La segunda línea se refiere a las conexiones que utilizan un nombre de host y le permitirá autenticarse con una contraseña a través del md5
método.
Mi configuración de desarrollo preferida
NOTA : Esto solo debe usarse en estaciones de trabajo de un solo usuario. Esto podría provocar una vulnerabilidad de seguridad importante en una máquina de producción o multiusuario.
Al desarrollar contra una instancia de postgres local, me gusta cambiar mi método de autenticación local a trust
. Esto permitirá conectarse a Postgres a través de un socket Unix local como cualquier usuario sin contraseña. Se puede hacer simplemente cambiando peer
arriba trust
y volviendo a cargar postgres.
# Don't require a password for local connections
local all all trust