Comment puis-je obtenir que pg_dump s’authentifie correctement

J’ai essayé d’utiliser la variable hôte PGPASSWORD et .pgpass et aucun des deux ne me permettra de .pgpass dans la firebase database. J’ai chmod ‘d .pgpass aux permissions appropriées et a également essayé:

 export PGPASSWORD=mypass and PGPASSWORD=mypass 

Le mot de passe DOIT contenir un \ cependant je l’ai encapsulé dans des guillemets simples PGPASS='mypass\' et il ne sera toujours pas authentifié.

Je suis entrain de courir:

 pg_dump dbname -U username -Fc 

et je reçois toujours

 pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL: Peer authentication failed for user "username" 

La solution rapide

Le problème est qu’il essaie d’effectuer peer authentification peer locale 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 

Cela indique à Postgres d’utiliser peer authentification par les peer pour les utilisateurs locaux, ce qui nécessite que le nom d’utilisateur postgres corresponde à votre nom d’utilisateur système actuel. La deuxième ligne fait référence aux connexions utilisant un nom d’hôte et vous permettra de vous authentifier avec un mot de passe via la méthode md5 .

Ma configuration de développement préférée

REMARQUE : Ceci ne doit être utilisé que sur les postes de travail mono-utilisateur. Cela pourrait entraîner une vulnérabilité de sécurité majeure sur une machine de production ou multi-utilisateurs.

Lors du développement sur une instance locale de postgres, j’aime changer ma méthode d’authentification locale pour faire trust . Cela permettra de se connecter à postgres via un socket unix local comme n’importe quel utilisateur sans mot de passe. Cela peut être fait simplement en changeant de peer pour trust et en rechargeant les postgres.

 # Don't require a password for local connections local all all trust