Nella mia configurazione ( Ubuntu 10.04.3e PostgreSQL 8.4), potrei finalmente farlo funzionare quando il nome utente a cui ho effettuato l'accesso è lo stesso di quello per cui sto cercando di ottenere una password dal .pgpassfile.
Effettuato l'accesso come deployer, stavo cercando di utilizzare il .pgpassfile per accedere al database di proprietà di un nome utente appname, che non ha un equivalente utente Unix. Non ho potuto fare il .pgpasslavoro, fino a quando non ho iniziato a utilizzare deployercome utente per accedere al mio database ...
Ecco il mio /home/deployer/.pgpasscontenuto del file:
*:*:*:deployer:password
Ecco una parte di /etc/postgresql/8.4/main/pg_hba.confquello:
# 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
Come puoi vedere, tutte le mie connessioni richiedono password ( md5).
Con questa configurazione, supponendo che io abbia un database che ho creato con questo comando:
deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname
Sono in grado di eseguire le seguenti operazioni senza inserire una password:
deployer@ubuntu-server:~$ dropdb dbname
Appena ho cambiare il nome del mio .pgpassper .pgpass-no, sarà necessaria una password.
A proposito, non dimenticare che il tuo .pgpassfile deve essere 0600autorizzato:
deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
-Ubandiera perdropdbecreatedb