Sur ma configuration ( Ubuntu 10.04.3et PostgreSQL 8.4), je pourrais enfin le faire fonctionner lorsque le nom d'utilisateur auquel je suis connecté est le même que celui que j'essaie d'obtenir un mot de passe du.pgpass fichier.
Connecté en tant que deployer, j'essayais d'utiliser le .pgpassfichier pour accéder à la base de données appartenant à un nom d'utilisateur appname, qui n'a pas d'équivalent utilisateur Unix. Je ne pouvais pas faire le .pgpasstravail, jusqu'à ce que je commence à utiliserdeployer tant qu'utilisateur pour accéder à ma base de données ...
Voici /home/deployer/.pgpassle contenu de mon fichier:
*:*:*:deployer:password
Voici une partie de celle- /etc/postgresql/8.4/main/pg_hba.confci:
# 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
Comme vous pouvez le voir, toutes mes connexions nécessitent un mot de passe (md5 ).
Avec cette configuration, en supposant que j'ai une base de données que j'ai créée avec cette commande:
deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname
Je peux effectuer l'opération suivante sans entrer de mot de passe:
deployer@ubuntu-server:~$ dropdb dbname
Dès que je change le nom de mon .pgpassà.pgpass-no , il faudra un mot de passe.
BTW, n'oubliez pas que votre .pgpassfichier doit être sous 0600autorisations:
deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
-Udrapeau versdropdbetcreatedb