He intentado usar variable del sistema principal PGPASSWORD
y .pgpass
y ninguno de estos dos me permite autenticarse en la base de datos. He chmod
obtenido .pgpass
los permisos adecuados y también he intentado:
export PGPASSWORD=mypass and PGPASSWORD=mypass
La contraseña SÍ contiene un \
sin embargo, la estaba entre comillas simples PGPASS='mypass\'
y aún no se autenticará.
Estoy corriendo:
pg_dump dbname -U username -Fc
y sigo recibiendo
pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL: Peer authentication failed for user "username"
postgresql
pg-dump
Kosmonaut
fuente
fuente
Respuestas:
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
.Explicación
Esto se debe a lo siguiente en su
pg_hba.conf
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 delmd5
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 cambiandopeer
arribatrust
y volviendo a cargar postgres.fuente
sudo locate pg_hba.conf
- tiene que ser sudo ya que el usuario de postgres será el único con acceso al directorio (creo).A veces puedes usar
fuente