La solution rapide
Le problème est qu'il essaye d'exécuter localement peer
l'authentification basée sur votre nom d'utilisateur actuel. Si vous souhaitez utiliser un mot de passe, vous devez spécifier le nom d'hôte avec -h
.
pg_dump dbname -U username -h localhost -F c
Explication
Ceci est dû à ce qui suit dans votre pg_hba.conf
local all all peer
host all all 127.0.0.1/32 md5
Ceci indique à Postgres d'utiliser peer
l'authentification pour les utilisateurs locaux qui exige que le nom d'utilisateur postgres corresponde à votre nom d'utilisateur système actuel. La deuxième ligne se réfère aux connexions utilisant un nom d'hôte et vous permettra de vous authentifier avec un mot de passe via le champ md5
méthode.
Ma configuration de développement préférée
NOTE : Cette option ne doit être utilisée que sur des postes de travail à utilisateur unique. Cela pourrait conduire à une vulnérabilité de sécurité majeure sur une machine de production ou multi-utilisateurs.
Lorsque je développe contre une instance locale de postgres, j'aime changer ma méthode d'authentification locale en trust
. Cela permettra de se connecter à postgres via un socket unix local en tant que n'importe quel utilisateur sans mot de passe. Cela peut être fait en changeant simplement peer
ci-dessus pour trust
et recharger postgres.
# Don't require a password for local connections
local all all trust
2 votes
La partie "...Authentification par les pairs..." du message d'erreur signifie qu'il n'y a pas d'authentification par les pairs. authentification par mot de passe du tout.