postgres pgpass example bash postgresql database-backups

bash - example - postgresql:.pgpass no funciona



pgpass windows (5)

He creado un archivo .pgpass en mi directorio de inicio que tiene este aspecto

localhost:5432:somedb:someuser:somepass

Estoy usando un script de shell que crea un directorio y coloca un pg_dump de somedb allí:

mkdir directory pg_dump somedb > directory/somefile.dump

Todavía pide la contraseña.

¿Dónde está el error aquí?


¿Intentaste especificar el host y el usuario?

pg_dump -U someuser -h localhost somedb > directory/somefile.dump


1) Crear un archivo .pgpass con contenido

anfitrión: 5432: somedb: someuser: somepass

2) establecer los permisos utilizando el comando

sudo chmod 600 .pgpass

3) Establezca el propietario del archivo como el mismo usuario con el que inició sesión:

sudo chown login_username: login_username .pgpass

4) Establecer la variable de entorno PGPASSFILE:

exportar PGPASSFILE = ''/ home / user / .pgpass''

Ahora compruebe conectándose a la base de datos:

psql -h host -U someuser somedb

No solicitará la contraseña y se conectará a postgresql.


Aunque la pregunta ya ha sido respondida y aceptada, también puede ocurrir que los permisos en el archivo .pgpass no estén configurados correctamente. Tiene que tener prohibido el acceso al mundo y al grupo:

/bin/chmod 0600 ~/.pgpass


Compruebe el propietario del archivo .pgpass. Solo perdí media hora para descubrir que había creado mi archivo .pgpass con sudo. El comando para mi usuario y ubicación era chown postgres:postgres /var/lib/pgsql/.pgpass .


psql ( startup.c ) llama a PQconnectdbParams ( fe-connect.c ), y luego se llama a passwordFromFile . Aquí hay una lista de verificación para asegurarse de que se utilizará el archivo pgpass:

  1. Asegúrese de que las banderas --password / -W y password= en la cadena de conexión estén desactivadas. De lo contrario, el archivo pgpass no se utilizará.
  2. Asegúrese de que la variable de entorno PGPASSWORD esté establecida ( echo $PGPASSWORD ). De lo contrario, el archivo pgpass no se utilizará.
  3. Asegúrese de que el archivo pgpass esté en la ubicación correcta ( $PGPASSFILE o predeterminado ~/.pgpass o %APPDATA%/postgresql/pgpass.conf )
  4. Asegúrese de que el archivo de acceso no sea legible, grabable o ejecutable por grupo u otro (por ejemplo, chmod 600 ~/.pgpass ); De lo contrario, psql imprimirá una advertencia.
  5. Asegúrese de que el archivo de acceso sea un archivo (no un enlace simbólico); De lo contrario, psql imprimirá una advertencia.
  6. Asegúrese de que el archivo de acceso sea legible por el usuario de psql (por ejemplo, cat ~/.pgpass ); De lo contrario, psql lo ignorará sin previo aviso. Asegúrese de que sea propiedad del usuario y de que todos los directorios de sus antepasados ​​sean ejecutables por el usuario.
  7. Asegúrese de que el nombre de host, el puerto, el dbname, el nombre de usuario de la línea en el archivo pgpass coincidan con el servidor o estén * . La "pwhost" del servidor que está marcada es el nombre del host si no está vacío, o la dirección IP de hostaddr . De lo contrario, el archivo será ignorado sin previo aviso.

Desafortunadamente, no hay registro dentro de estos archivos, por lo que si esto no ayuda, entonces es posible que necesite compilar psql y libpq usted mismo y ejecutarlo en un depurador.