En mi configuración ( Ubuntu 10.04.3
y 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 .pgpass
archivo.
Inicié sesión como deployer
, estaba tratando de usar el .pgpass
archivo 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 .pgpass
trabajo, hasta que comencé a usarlo deployer
como usuario para acceder a mi base de datos ...
Aquí está el /home/deployer/.pgpass
contenido de mi archivo:
*:*:*:deployer:password
Aquí una parte de la /etc/postgresql/8.4/main/pg_hba.conf
una:
# 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 .pgpass
a .pgpass-no
, 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
-U
banderadropdb
ycreatedb
1) 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