postgresql - ejemplos - ¿Cómo puedo obtener pg_dump para autenticarse correctamente?
pg_dump postgresql ejemplos (1)
He intentado usar la variable de host PGPASSWORD
y .pgpass
y ninguno de estos dos me permitirá autenticarte en la base de datos. Tengo chmod
''d .pgpass
para los permisos apropiados y también intenté:
export PGPASSWORD=mypass and PGPASSWORD=mypass
La contraseña CONTIENE un /
sin embargo lo estaba encerrando en comillas simples PGPASS=''mypass/'
y todavía no se autenticará.
Estoy corriendo:
pg_dump dbname -U username -Fc
y todavía recibo
pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL: Peer authentication failed for user "username"
La solución rápida
El problema es que está tratando de realizar peer
autenticación de peer
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 de peer
para usuarios locales, lo que requiere que el nombre de usuario de postgres coincida con su nombre de usuario actual del sistema. La segunda línea se refiere a las conexiones que usan un nombre de host y le permitirá autenticarse con una contraseña a través del método md5
.
Mi configuración preferida de desarrollo
NOTA : Esto solo debe usarse 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 contra una instancia de postgres local, me gusta cambiar mi método de autenticación local para 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 el peer
anterior para trust
y volver a cargar postgres.
# Don''t require a password for local connections
local all all trust