Sur ma configuration ( Ubuntu 10.04.3
et 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 .pgpass
fichier 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 .pgpass
travail, jusqu'à ce que je commence à utiliserdeployer
tant qu'utilisateur pour accéder à ma base de données ...
Voici /home/deployer/.pgpass
le contenu de mon fichier:
*:*:*:deployer:password
Voici une partie de celle- /etc/postgresql/8.4/main/pg_hba.conf
ci:
# 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 .pgpass
fichier doit être sous 0600
autorisations:
deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
-U
drapeau versdropdb
etcreatedb
1) Créez un fichier .pgpass avec du contenu
2) définissez les autorisations à l'aide de la commande
3) Définissez le propriétaire du fichier comme le même utilisateur que celui avec lequel vous vous êtes connecté:
4) Définissez la variable d'environnement PGPASSFILE:
Vérifiez maintenant en vous connectant à la base de données:
Je ne demanderai pas de mot de passe et je me suis connecté à postgresql.
la source