894 votes

Obtention d'une erreur : Peer authentication failed for user "postgres", lorsque l'on essaie de faire fonctionner pgsql avec rails.

Je reçois l'erreur :

FATAL: Peer authentication failed for user "postgres"

quand j'essaie de faire fonctionner postgres avec Rails.

Voici mon pg_hba.conf , mon database.yml et un vidage de la trace complète .

J'ai changé l'authentification en md5 dans pg_hba et essayé différentes choses, mais aucune ne semble fonctionner.

J'ai également essayé de créer un nouvel utilisateur et une nouvelle base de données comme indiqué dans le tableau ci-dessous. Rails 3.2, FATAL : L'authentification par les pairs a échoué pour l'utilisateur (PG::Error)

Mais ils n'apparaissent pas sur pgadmin ou même lorsque j'exécute le programme. sudo -u postgres psql -l .

Vous savez où je me trompe ?

1 votes

1) : Assurez-vous que vous avez créé un utilisateur nommé "postgres" et que vous avez les droits sur votre base de données. 2) : Assurez-vous qu'il a un mot de passe 3) : Assurez-vous que votre config/database.yml contient les informations d'identification des droits (nom d'utilisateur + mot de passe).

2 votes

Il faut que chaque endroit soit pair et que l'indentation soit réglée sur md5

18 votes

Voir également cette réponse - la connexion peut échouer sur localhost mais réussissent sur 127.0.0.1 .

10voto

Luca Marletta Points 407

Je déplaçais le répertoire de données sur un serveur cloné et j'avais des problèmes pour me connecter en tant que postgres. La réinitialisation du mot de passe postgres comme ceci a fonctionné pour moi.

root# su postgres
postgres$ psql -U postgres
psql (9.3.6) 
Type "help" for help. 
postgres=#\password 
Enter new password: 
Enter it again: 
postgres=#

7voto

sibosop Points 91

Les modifications ci-dessus ont fonctionné pour moi, après avoir compris que je devais redémarrer le serveur postgres après les avoir faites. Pour ubuntu :

sudo /etc/init.d/postgresql restart

6voto

MageDev Points 249

Utilice host=localhost en relation.

PGconn *conn = PQconnectdb(
    "host=localhost user=postgres dbname=postgres password=123"
);

6voto

Changer de méthode pair a confiance dans pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf | ligne 85) résout le problème. L'ajout de md5 demande un mot de passe, donc s'il y a une exigence pour éviter d'utiliser des mots de passe, utilisez confiance au lieu de md5 .

5voto

Il suffit de mettre en place la MÉTHODE de la confiance.

#TYPE  DATABASE        USER            ADDRESS                 METHOD
local    all             all                                     trust

Et recharger le serveur postgres.

# service postgresql-9.5 reload

Les changements dans pg_hba.conf ne nécessitent pas de redémarrer le serveur postgres, mais seulement de le redémarrer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X