A Solução Rápida
O problema é que ele está tentando realizar a peer
autenticação local com base em seu nome de usuário atual. Se desejar usar uma senha, você deve especificar o nome do host com -h
.
pg_dump dbname -U username -h localhost -F c
Explicação
Isso se deve ao seguinte em seu pg_hba.conf
local all all peer
host all all 127.0.0.1/32 md5
Isso diz ao Postgres para usar peer
autenticação para usuários locais, o que requer o nome de usuário do postgres para corresponder ao seu nome de usuário do sistema atual. A segunda linha refere-se a conexões usando um nome de host e permitirá que você autentique com uma senha por meio do md5
método.
Minha configuração de desenvolvimento preferida
NOTA : Isso só deve ser usado em estações de trabalho de usuário único. Isso pode levar a uma grande vulnerabilidade de segurança em uma máquina de produção ou multiusuário.
Ao desenvolver em uma instância local do postgres, gosto de alterar meu método de autenticação local para trust
. Isso permitirá a conexão com o postgres por meio de um soquete unix local como qualquer usuário sem senha. Isso pode ser feito simplesmente alterando peer
acima trust
e recarregando o postgres.
# Don't require a password for local connections
local all all trust