O arquivo pgpass está definido para o modo 0600 (ou seja, somente leitura / gravação pelo proprietário)? A biblioteca do cliente irá ignorá-lo se for legível por grupos ou pelo mundo.
Eu coloquei um arquivo .pgpass em /folder/.pgpass e parece com isso
*:*:*:postgres:password_for_postgres
Eu tenho um script bash onde eu faço backup do banco de dados do postgreSQL:
#!/bin/bash
export PGPASSFILE=/folder/.pgpass
echo $PGPASSFILE
pg_dump --username=postgres --format=c --file=/backup/db/db.sqlc database
No entanto, o script ainda me pede a senha. PGPASSFILE tem o valor que deveria, até onde eu posso ver. Alguma dica sobre o problema?
/ K
O arquivo pgpass está definido para o modo 0600 (ou seja, somente leitura / gravação pelo proprietário)? A biblioteca do cliente irá ignorá-lo se for legível por grupos ou pelo mundo.
Na minha configuração ( Ubuntu 10.04.3
e PostgreSQL 8.4
), finalmente consegui que funcionasse quando o nome de usuário em que estou logado é o mesmo que estou tentando obter uma senha do .pgpass
file for.
Conectado como deployer
, eu estava tentando usar o arquivo .pgpass
para acessar o banco de dados de um nome de usuário appname
, que não possui um equivalente de usuário Unix. Eu não consegui fazer o .pgpass
funcionar, até que comecei a usar deployer
como usuário para acessar meu banco de dados ...
Aqui está o meu conteúdo do arquivo /home/deployer/.pgpass
:
*:*:*:deployer:password
Aqui, uma parte do /etc/postgresql/8.4/main/pg_hba.conf
one:
# 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 exigem 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 executar a seguinte operação sem inserir uma senha:
deployer@ubuntu-server:~$ dropdb dbname
Assim que eu alterar o nome do meu .pgpass
para .pgpass-no
, será necessária uma senha.
BTW, não se esqueça de que seu arquivo .pgpass
deve estar abaixo de 0600
permissions:
deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
1) Crie um arquivo .pgpass com conteúdo
host:5432:somedb:someuser:somepass
2) defina as permissões usando o comando
sudo chmod 600 .pgpass
3) Defina o proprietário do arquivo como o mesmo usuário em que você efetuou login:
sudo chown login_username:login_username .pgpass
4) Defina a variável de ambiente PGPASSFILE:
export PGPASSFILE='/home/user/.pgpass'
Agora verifique conectando-se ao banco de dados:
psql -h host -U someuser somedb
Eu não pedirei senha e logado no postgresql.
Tags backup postgresql ubuntu