Na minha configuração ( Ubuntu 10.04.3
e PostgreSQL 8.4
), finalmente consegui fazê-lo funcionar quando o nome de usuário no qual estou conectado é o mesmo que estou tentando obter uma senha do .pgpass
arquivo.
Conectado como deployer
, eu estava tentando usar o .pgpass
arquivo para acessar o banco de dados pertencente a um nome de usuário appname
, que não possui equivalente de usuário Unix. Não pude fazer o .pgpass
trabalho, até começar a usar deployer
como usuário para acessar meu banco de dados ...
Aqui está o /home/deployer/.pgpass
conteúdo do meu arquivo:
*:*:*:deployer:password
Aqui uma parte desse /etc/postgresql/8.4/main/pg_hba.conf
:
# 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 você pode ver, todas as minhas conexões requerem senha ( md5
).
Com esta configuração, supondo que eu tenha um banco de dados que criei com este comando:
deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname
Consigo realizar a seguinte operação sem inserir uma senha:
deployer@ubuntu-server:~$ dropdb dbname
Assim que eu mudar o nome do meu .pgpass
para .pgpass-no
, será necessária uma senha.
BTW, não esqueça que seu .pgpass
arquivo deve estar sob 0600
permissões:
deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
-U
bandeira paradropdb
ecreatedb