Cómo puedo hacer que pg dump se autentique correctamente


He intentado usar la variable host PGPASSWORD y .pgpass y ninguna de estas dos me permitirá autenticarme en la base de datos. Tengo chmod ' d .pgpass a los permisos apropiados y también trató:

export PGPASSWORD=mypass and PGPASSWORD=mypass

La contraseña contiene un \ sin embargo, la estaba encerrando entre 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"
Author: Jim Mitchener, 2012-05-03

1 answers

La Solución Rápida

El problema es que está tratando de realizar peer autenticación 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 que requiere que el nombre de usuario de postgres coincida con su actual nombre de usuario 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 conducir a una vulnerabilidad de seguridad importante en una máquina de producción o multiusuario.

Al desarrollar contra una instancia local de postgres, me gusta cambiar mi método de autenticación local to 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 por trust y recargando postgres.

# Don't require a password for local connections
local   all             all                                     trust
 157
Author: Jim Mitchener,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-14 23:42:32