En mi configuración ( Ubuntu 10.04.3y PostgreSQL 8.4), finalmente pude hacer que funcione cuando el nombre de usuario para el que estoy conectado es el mismo para el que estoy tratando de obtener una contraseña del .pgpassarchivo.
Inicié sesión como deployer, estaba tratando de usar el .pgpassarchivo para acceder a la base de datos propiedad de un nombre de usuario appname, que no tiene equivalente de usuario de Unix. No pude hacer el .pgpasstrabajo, hasta que comencé a usarlo deployercomo usuario para acceder a mi base de datos ...
Aquí está el /home/deployer/.pgpasscontenido de mi archivo:
*:*:*:deployer:password
Aquí una parte de la /etc/postgresql/8.4/main/pg_hba.confuna:
# 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 puede ver, todas mis conexiones requieren contraseña ( md5).
Con esta configuración, suponiendo que tengo una base de datos que creé con este comando:
deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname
Puedo realizar la siguiente operación sin ingresar una contraseña:
deployer@ubuntu-server:~$ dropdb dbname
Tan pronto como cambie el nombre de mi .pgpassa .pgpass-no, requerirá una contraseña.
Por cierto, no olvides que tu .pgpassarchivo debe estar bajo 0600permisos:
deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
-Ubanderadropdbycreatedb1) Crear un archivo .pgpass con contenido
2) establece los permisos usando el comando
3) Establezca el propietario del archivo como el mismo usuario con el que inició sesión:
4) Establecer la variable de entorno PGPASSFILE:
Ahora verifique conectándose a la base de datos:
No solicitaré la contraseña e iniciaré sesión en postgresql.
fuente