11 votos

.pgpass con postgreSQL no funciona

He puesto .pgpass archivo /carpeta/.pgpass y se parece a esto

*:*:*:postgres:password_for_postgres

Tengo un script en bash donde me de copia de seguridad de la base de datos de postgreSQL:

#!/bin/bash
export PGPASSFILE=/folder/.pgpass
echo $PGPASSFILE
pg_dump --username=postgres --format=c --file=/backup/db/db.sqlc database

Sin embargo, el guión aún promts me de la contraseña. PGPASSFILE tiene el valor como debe ser, como lo que puedo ver. Consejos sobre qué podría ser el problema?

/K

5voto

softRli Puntos 121

En mi configuración (Ubuntu 10.04.3 y PostgreSQL 8.4), finalmente pude llegar a trabajar cuando el nombre de usuario estoy conectado es el mismo que el que yo estoy tratando de conseguir una contraseña de la .pgpass archivo.

Ha iniciado la sesión como deployer, yo estaba tratando de utilizar la .pgpass archivo para acceder a la base de datos de titularidad de un nombre de usuario appname, que no tiene ningún usuario de Unix equivalente. No pude hacer la .pgpass obra, hasta que empecé a usar deployer como usuario para acceder a mi base de datos...

Aquí está mi /home/deployer/.pgpass contenido del archivo:

*:*:*:deployer:password

Aquí una parte de la /etc/postgresql/8.4/main/pg_hba.conf uno:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD                                                

# "local" is for Unix domain socket connections only                                                        
local   all         all                               md5                                                   
# IPv4 local connections:                                                                                   
host    all         all         127.0.0.1/32          md5                                                   
host    all         all         192.168.0.1/32        md5                                                   
# IPv6 local connections:                                                                                   
host    all         all         ::1/128               md5 

Como se puede ver, todas mis conexiones requiere contraseña (md5).

Con esta configuración, suponiendo que tengo una base de datos que he creado con este comando:

deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname

Soy capaz de realizar la operación siguiente sin introducir una contraseña:

deployer@ubuntu-server:~$ dropdb dbname

Tan pronto como puedo cambiar el nombre de mi .pgpass a .pgpass-no, se requerirá una contraseña.

Por CIERTO, no olvides que tu .pgpass archivo debe estar bajo 0600 permisos:

deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass

4voto

araqnid Puntos 608

Es el archivo pgpass conjunto a modo de 0600 (es decir, de lectura/escritura sólo por el propietario)? La biblioteca de cliente de ignorará si es grupo - o legible por todo el mundo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: