essa minha configuração:
#postgres.conf:
listen_addresses = 'localhost'
#pg_hba.conf:
local all postgres md5
local all appuser trust
local all devuser trust
local all all peer
estou conectando no local usando o C-Library libpq
. Minha string de conexão é:
host=localhost user=appuser dbname=mydbname port='5432'
No entanto, a menos que eu tenha um arquivo .pgpass na casa do meu usuário desenvolvedor (devuser), (aquele que inicia o aplicativo vinculado à libpq), meu executável não pode se conectar, recebo o errofe_sendauth : no password supplied
Como eu disse, se o arquivo .pgpass estiver aqui, então ele conecta ok.
O que não entendo: configurei local all appuser
trust . Por que preciso de um arquivo .pgpass mesmo assim?
(Não é um problema sério em si, porque mais tarde por medida de segurança, não estará mais em trust
, mas md5
, então terei o arquivo .pgpass de qualquer maneira. Mas gostaria de saber)
Eu posso ver como alguém pode pensar que
listen_addresses = 'localhost'
está de alguma forma relacionado ao método de autenticaçãolocal
. Mas não é. Cito o manual emlisten_addresses
:E o capítulo O
pg_hba.conf
Arquivo no manual:Ênfase em negrito minha.
Para conexões via
localhost
(TCP/IP, loopback local), você realmente precisa de uma entrada para o método de autenticaçãohost
em seupg_hba.conf
arquivo (não paralocal
).