A Solução Rápida
O problema é que ele está tentando realizar a peerautenticaçã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 peerautenticaçã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 md5mé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 peeracima truste recarregando o postgres.
# Don't require a password for local connections
local all all trust