Je reçois l'erreur:
FATAL: Peer authentication failed for user "postgres"
quand j'essaye 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 conformément à 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 je cours sudo -u postgres psql -l
.
Une idée où je me trompe?
ruby-on-rails
postgresql
orderof1
la source
la source
localhost
mais réussir127.0.0.1
.host: localhost
ledatabase.yml
fichier.Réponses:
Le problème est toujours votre
pg_hba.conf
fichier (/etc/postgresql/9.1/main/pg_hba.conf*
).Cette ligne:
Devrait être:
* Si vous ne trouvez pas ce fichier, l'exécution
locate pg_hba.conf
devrait vous montrer où se trouve le fichier.Après avoir modifié ce fichier, n'oubliez pas de redémarrer votre serveur PostgreSQL. Si vous êtes sous Linux, ce serait le cas
sudo service postgresql restart
.Ce sont de brèves descriptions des deux options selon les documents officiels de PostgreSQL sur les méthodes d'authentification .
Authentification par les pairs
Authentification par mot de passe
Emplacement de l'échantillon pour
pg_hba.conf
:/etc/postgresql/9.1/main/pg_hba.conf
la source
/etc/init.d/postgresql reload
/etc/postgresql/9.1/main/pg_hba.conf
sudo service postgreql restart
fonctionne également.Après avoir installé Postgresql, j'ai effectué les étapes ci-dessous.
ouvrez le fichier
pg_hba.conf
pour Ubuntu dans lequel il se trouvera/etc/postgresql/9.x/main
et modifiez cette ligne:à
Redémarrez le serveur
Connectez-vous à psql et définissez votre mot de passe
Enfin, changez le
pg_hba.conf
deà
Après avoir redémarré le serveur postgresql, vous pouvez y accéder avec votre propre mot de passe
Détails des méthodes d'authentification:
pour plus de vérification de référence ici
la source
sudo passwd postgres
Si vous vous connectez via localhost (127.0.0.1), vous ne devriez pas rencontrer ce problème particulier. Je ne muck pas beaucoup avec le pg_hba.conf mais à la place j'ajusterais votre chaîne de connexion:
où someuser est votre utilisateur auquel vous vous connectez et base de données est la base de données à laquelle votre utilisateur est autorisé à se connecter.
Voici ce que je fais sur Debian pour configurer les postgres:
Prendre plaisir!
la source
host: 127.0.0.1
de défaut à localhost dans config / database.yml - c'est sur la même machine donc je ne comprends pas pourquoiCela a fonctionné pour moi !!
la source
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.4
L'étape suivante est la suivante: redémarrage de votre instance de base de données:
service postgresql-9.3 restart
Si vous rencontrez des problèmes, vous devez de nouveau définir le mot de passe:
ALTER USER db_user with password 'db_password';
la source
Dans mon cas:
Donc, cela sera changé en:
Connexion administrative à la base de données par socket de domaine Unix local tout homologue postgres
Cette:
Connexion administrative à la base de données par socket de domaine Unix local tout postgres md5
Redémarrez ensuite le serveur pg:
$> sudo service redémarrage postgresql
Voici la liste des méthodes utilisées pour se connecter avec postgres:
Remarque: Si vous n'avez pas encore créé votre utilisateur postgres. Créez cela et maintenant vous pouvez accéder au serveur postgres en utilisant les informations d'identification de cet utilisateur.
CONSEIL: Si cela ne fonctionne pas après le redémarrage de postgres, fermez le terminal et rouvrez-le.
la source
Cela a résolu mon problème
la source
J'ai eu le même problème.
La solution de depa est absolument correcte.
Assurez-vous simplement qu'un utilisateur est configuré pour utiliser PostgreSQL.
Vérifiez le fichier:
L'autorisation de ce fichier doit être accordée à l'utilisateur avec lequel vous avez enregistré votre psql.
Plus loin. Si vous êtes bon jusqu'à maintenant ..
Mettez à jour selon les instructions de @ depa.
c'est à dire
puis apportez des modifications.
la source
-rw-r----- 1 postgres postgres 4640 Jun 16 09:59 /etc/postgresql/9.5/main/pg_hba.conf
Si vous souhaitez conserver la configuration par défaut mais souhaitez une authentification md5 avec une connexion socket pour une connexion utilisateur / db spécifique, ajoutez une ligne "locale" AVANT la ligne "local tout / tout":
la source
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 celui-ci a fonctionné pour moi.
la source
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:
la source
La modification de l' homologue METHOD à laquelle faire 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 est nécessaire d'éviter d'utiliser des mots de passe, utilisez la confiance au lieu de md5 .
la source
Utiliser
host=localhost
en connexion.la source
la commande ci-dessous fonctionne pour moi:
la source
-W --password Force psql to prompt for a password before connecting to a database. This option is never essential, since psql will automatically prompt for a password if the server demands password authentication. However, psql will waste a connection attempt finding out that the server wants a password. In some cases it is worth typing -W to avoid the extra connection attempt.
Il vous suffit de définir la méthode pour faire confiance.
Et rechargez le serveur postgres.
Les changements dans pg_hba.conf ne nécessitent pas de serveur postgres RESTART. juste RELOAD.
la source
La plupart des autres réponses se rapportent aux paramètres des différents fichiers de configuration et à ceux
pg_hba.conf
ne s'appliquent et sont 100% correctes. Cependant, assurez-vous de modifier les fichiers de configuration corrects .Comme d'autres l'ont mentionné, les emplacements du fichier de configuration peuvent être remplacés par divers paramètres à l'intérieur du fichier de configuration principal, ainsi qu'en fournissant un chemin d'accès au fichier de configuration principal sur la ligne de commande avec l'
-D
option.Vous pouvez utiliser la commande suivante pendant une session psql pour montrer où vos fichiers de configuration sont lus (en supposant que vous pouvez lancer psql). Ce n'est qu'une étape de dépannage qui peut aider certaines personnes:
Vous devez également vous assurer que le répertoire personnel de votre utilisateur postgres est là où vous vous attendez. Je dis cela car il est assez facile de l'ignorer car votre invite affichera `
~
` au lieu du chemin réel de votre répertoire personnel, ce qui ne le rend pas si évident. De nombreuses installations utilisent par défaut le répertoire personnel de l'utilisateur postgres/var/lib/pgsql
.S'il n'est pas défini sur ce qu'il est censé être, arrêtez le service postgresql et utilisez la commande suivante lorsque vous êtes connecté en tant que root. Assurez-vous également que l'utilisateur postgres n'est pas connecté à une autre session:
Enfin, assurez-vous que votre variable PGDATA est correctement définie en tapant
echo $PGDATA
, ce qui devrait produire quelque chose de similaire à:S'il n'est pas défini ou affiche quelque chose de différent de ce que vous attendez, examinez vos fichiers de démarrage ou RC tels que .profile ou .bash.rc - cela variera considérablement en fonction de votre système d'exploitation et de votre shell. Une fois que vous avez déterminé le script de démarrage correct pour votre machine, vous pouvez insérer ce qui suit:
Pour mon système, je l'ai placé dans
/etc/profile.d/profile.local.sh
afin qu'il soit accessible à tous les utilisateurs.Vous devriez maintenant pouvoir lancer la base de données comme d'habitude et tous vos paramètres de chemin psql devraient être corrects!
la source
pg_config est pour les informations de complication, pour aider les extensions et les programmes clients à compiler et à se lier à PostgreSQL. Il ne sait rien des instances PostgreSQL actives sur la machine, seulement les binaires.
pg_hba.conf peut apparaître à de nombreux autres endroits selon la façon dont Pg a été installé. L'emplacement standard est pg_hba.conf dans le répertoire data_de la base de données (qui pourrait être dans / home, / var / lib / pgsql, / var / lib / postgresql / [version] /, / opt / postgres /, etc etc etc)) mais les utilisateurs et les conditionneurs peuvent le placer où bon leur semble. Malheureusement.
Le seul moyen valable de trouver pg_hba.conf est de demander à une instance PostgreSQL en cours d'exécution où se trouve pg_hba.conf, ou de demander au sysadmin où il se trouve. Vous ne pouvez même pas vous fier à demander où se trouve le datadir et à analyser postgresql.conf car un script init peut passer un paramètre comme -c hba_file = / some / other / path lors du démarrage de Pg.
Ce que vous voulez faire, c'est demander à PostgreSQL:
Cette commande doit être exécutée sur une session superutilisateur, donc pour les scripts shell, vous pourriez écrire quelque chose comme:
et définissez les variables d'environnement PGUSER, PGDATABASE, etc. pour vous assurer que la connexion est correcte.
Oui, c'est un peu un problème de poule et d'oeuf, en ce sens que si l'utilisateur ne peut pas se connecter (par exemple, après avoir bousillé l'édition de pg_hba.conf), vous ne pouvez pas trouver pg_hba.conf pour le corriger.
Une autre option consiste à regarder la sortie de la commande ps et à voir si l'argument du répertoire de données postmaster -D y est visible, par exemple
puisque pg_hba.conf sera à l'intérieur du répertoire de données (sauf si vous êtes sur Debian / Ubuntu ou un dérivé et utilisez leurs paquets).
Si vous ciblez spécifiquement des systèmes Ubuntu avec PostgreSQL installé à partir de paquets Debian / Ubuntu, cela devient un peu plus facile. Vous n'avez pas à gérer un Pg compilé à la main pour lequel quelqu'un a initialisé un datadir dans son répertoire personnel, ou une installation EnterpriseDB Pg dans / opt, etc. Vous pouvez demander à pg_wrapper, le multi Debian / Ubuntu -version Pg manager, où PostgreSQL utilise la commande pg_lsclusters de pg_wrapper.
Si vous ne pouvez pas vous connecter (Pg n'est pas en cours d'exécution, ou vous devez modifier pg_hba.conf pour vous connecter), vous devrez rechercher les fichiers pg_hba.conf dans le système. Sur Mac et Linux, quelque chose comme sudo find / -type f -name pg_hba.conf fera l'affaire. Vérifiez ensuite le fichier PG_VERSION dans le même répertoire pour vous assurer qu'il s'agit de la bonne version de PostgreSQL si vous en avez plusieurs. (Si pg_hba.conf est dans / etc /, ignorez cela, c'est le nom du répertoire parent à la place). Si vous avez plus d'un répertoire de données pour la même version de PostgreSQL, vous devrez regarder la taille de la base de données, vérifiez la ligne de commande des postgres en cours d'exécution à partir de ps pour voir si son répertoire de données - l'argument D correspond à l'endroit où vous éditez, etc. . /ubuntu/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell/256711
la source
Mon problème était que je n'ai tapé aucun serveur. Je pensais que c'était un défaut à cause de l'espace réservé mais quand j'ai tapé localhost cela a fonctionné.
la source
Si vous essayez de localiser ce fichier dans Cloud 9, vous pouvez le faire
Appuyez sur
I
pour modifier / insérer, appuyez surESC
3 fois et tapez:wq
pour enregistrer le fichier et quitterla source
Si vous rencontrez ce problème avec les rails et que vous savez que vous avez déjà créé ce nom d'utilisateur avec le mot de passe ainsi que les droits appropriés, il vous suffit de mettre ce qui suit à la fin de votre fichier database.yml.
le fichier global ressemblera à ci-dessous
Vous n'avez pas du tout besoin de toucher votre
pg_hba.conf
fichier. Codage heureuxla source
Solution la plus simple sans changer les configurations. (ubuntu) Changer d'utilisateur, puis connectez-vous à la base de données cli.
extrait de https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04
la source