.pgpass com o postgreSQL não funcionando

11

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

    
por Kerstin Viltersten 29.06.2011 / 11:05

3 respostas

6

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.

    
por 29.06.2011 / 14:49
5

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
    
por 06.01.2012 / 17:32
0

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.

    
por 28.05.2018 / 11:37