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 .

20voto

d.danailov Points 943

Si vous avez un problème, vous devez localiser votre pg_hba.conf . La commande est :

find / -name 'pg_hba.conf' 2>/dev/null

et après cela, changez le fichier de configuration :

Postgresql 9.3

Postgresql 9.3

Postgresql 9.4

Postgresql 9.3

L'étape suivante est : Redémarrer votre instance db :

service postgresql-9.3 restart

Si vous avez des problèmes, vous devez définir à nouveau le mot de passe :

ALTER USER db_user with password 'db_password';

19voto

Taimoor Changaiz Points 892
  1. Aller à cette page /etc/postgresql/9.x/main/ et ouvrir pg_hba.conf fichier

Dans mon cas :

$>  sudo nano /etc/postgresql/9.3/main/pg_hba.conf
  1. Remplacer pair con md5

Ce sera donc changé en :

Connexion administrative de la base de données par socket de domaine Unix local all postgres peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

Ceci :

Connexion administrative de la base de données par socket de domaine Unix local tout postgres md5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
  1. Puis redémarrez le serveur pg :

    $> sudo service postgresql restart

Voici la liste des METHODES utilisées pour se connecter à postgres :

# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi",
# "krb5", "ident", "peer", "pam", "ldap", "radius" or "cert".  Note that
# "password" sends passwords in clear text; "md5" is preferred since
# it sends encrypted passwords.

Nota: Si vous n'avez pas encore créé votre utilisateur postgres. Créez-le et maintenant vous pouvez accéder au serveur postgres en utilisant les informations d'identification de cet utilisateur.

TIP : Si cela ne fonctionne pas après le redémarrage de postgres, fermez le terminal et ouvrez-le à nouveau.

17voto

La solution la plus simple sans changer de configuration. (ubuntu) Changer d'utilisateur, puis se connecter à la base de données cli.

sudo -i -u postgres

psql

tiré de https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04

11voto

nirvanastack Points 59

J'ai eu le même problème.

La solution de Depa est absolument correcte.

Assurez-vous simplement que vous avez un utilisateur configuré pour utiliser PostgreSQL.

Vérifiez le dossier :

$ ls /etc/postgresql/9.1/main/pg_hba.conf -l

La permission de ce fichier doit être donnée à l'utilisateur avec lequel vous avez enregistré votre psql.

Plus loin. Si vous êtes bien jusqu'à maintenant

Mise à jour selon les instructions de @depa.

c'est-à-dire

$ sudo nano /etc/postgresql/9.1/main/pg_hba.conf

et ensuite faire des changements.

0 votes

Je suis confronté au même problème. Mais je ne sais pas quelles sont les autorisations dont j'ai besoin. Je reçois la sortie de la commande 'ls' comme suit -rw-r----- 1 postgres postgres 4640 Jun 16 09:59 /etc/postgresql/9.5/main/pg_hba.conf

10voto

Åsmund Points 573

Si vous voulez conserver la configuration par défaut mais que vous souhaitez une authentification md5 avec connexion socket pour un utilisateur/une connexion BD spécifique, ajoutez une ligne "local" AVANT la ligne "local all/all" :

# TYPE  DATABASE     USER         ADDRESS             METHOD

# "local" is for Unix domain socket connections only
local   dbname       username                         md5  # <-- this line
local   all          all                              peer
# IPv4 local connections:
host    all          all          127.0.0.1/32        ident
# IPv6 local connections:
host    all          all          ::1/128             ident

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