J'ai installé PostgreSQL et pgAdminIII sur ma boîte Ubuntu Karmic.
Je peux utiliser pgAdminIII avec succès (c'est-à-dire se connecter / se connecter), mais lorsque j'essaie de me connecter au serveur en utilisant le même nom d'utilisateur / pwd sur la ligne de commande (en utilisant psql), j'obtiens l'erreur:
psql: FATAL: Ident authentication failed for user "postgres"
Est-ce que quelqu'un maintenant comment résoudre ce problème?
postgresql
morpheous
la source
la source
Réponses:
Avez-vous défini les paramètres appropriés dans pg_hba.conf?
Voir https://help.ubuntu.com/stable/serverguide/postgresql.html comment le faire.
la source
Les étapes suivantes fonctionnent pour une nouvelle installation de postgres 9.1 sur Ubuntu 12.04. (A également fonctionné pour postgres 9.3.9 sur Ubuntu 14.04.)
Par défaut, postgres crée un utilisateur nommé 'postgres'. Nous nous connectons comme elle et lui donnons un mot de passe.
Déconnectez-vous
psql
en tapant\q
ouctrl+d
. Ensuite, nous nous connectons en tant que «postgres». La-h localhost
partie est importante : elle indique aupsql
client que nous souhaitons nous connecter en utilisant une connexion TCP (qui est configurée pour utiliser l'authentification par mot de passe), et non par une connexion PEER (qui ne se soucie pas du mot de passe).la source
PGHOST=localhost
vous n'avez pas besoin de spécifier l'-h
option à chaque fois. Cela fonctionne également avec d'autrespg_*
commandes telles quepg_dump
.Modifiez le fichier
/etc/postgresql/8.4/main/pg_hba.conf
et remplacez-leident
oupeer
parmd5
outrust
, selon que vous souhaitez ou non qu'il demande un mot de passe sur votre propre ordinateur. Rechargez ensuite le fichier de configuration avec:la source
restart
fonctionné que pour moi, pasreload
--- après les modifications apportées à/etc/postgresql/9.5/main/pg_hba.conf
(changerpeer
entrust
).Vous obtenez cette erreur car vous échouez à l'authentification client. Sur la base du message d'erreur, vous disposez probablement de la configuration postgres par défaut, qui définit la méthode d'authentification client sur "IDENT" pour toutes les connexions PostgreSQL.
Vous devriez certainement lire la section 19.1 Authentification client dans le manuel de PostgreSQL pour mieux comprendre les paramètres d'authentification disponibles (pour chaque enregistrement dans pg_hba.conf ), mais voici l'extrait pertinent pour résoudre le problème que vous rencontrez (à partir du manuel de la version 9.5 ):
Donc ... pour résoudre le problème que vous rencontrez, vous pouvez effectuer l'une des opérations suivantes:
Changer la méthode d'authentification (s) défini dans votre
pg_hba.conf
fichiertrust
,md5
oupassword
( en fonction de vos besoins de sécurité et de simplicité) pour les enregistrements de connexion locale que vous avez définies là - dedans.Mettez
pg_ident.conf
à jour pour mapper les utilisateurs de votre système d'exploitation aux utilisateurs PostgreSQL et accordez-leur les privilèges d'accès correspondants, en fonction de vos besoins.Laissez les paramètres IDENT seuls et créez des utilisateurs dans votre base de données pour chaque utilisateur du système d'exploitation auquel vous souhaitez accorder l'accès. Si un utilisateur est déjà authentifié par le système d'exploitation et connecté, PostgreSQL ne nécessitera pas d'authentification supplémentaire et accordera l'accès à cet utilisateur en fonction des privilèges (rôles) qui lui sont attribués dans la base de données. Il s'agit de la configuration par défaut.
Remarque: l'emplacement
pg_hba.conf
etpg_ident.conf
dépend du système d'exploitation.la source
/etc/postgresql/9.6/main/pg_hba.conf
.Il suffit d'ajouter le
-h localhost
mors pour travaillerla source
this_computer = 'http://localhost'
Vous pouvez définir la variable d'environnement
PGHOST=localhost
:la source
Dans le cas où rien de ce qui précède ne fonctionne pour vous:
j'ai fait pas mal d'installations Postgres, mais j'ai été déconcerté aujourd'hui sur un système RedHat 6.5 (en installant Postgres 9.3). Ma configuration hba.conf typique qu'Aron montre ci-dessus n'a pas fonctionné. Il s'est avéré que mon système utilisait IPV6 et ignorait la configuration IPV4. Ajout de la ligne:
m'a permis de me connecter avec succès.
la source
De toutes les réponses ci-dessus, rien n'a fonctionné pour moi. J'ai dû changer manuellement le mot de passe des utilisateurs dans la base de données et cela a soudainement fonctionné.
J'ai utilisé les paramètres suivants:
pg_hba.conf
La connexion réussit enfin pour la commande suivante:
la source
J'ai trouvé que je devais installer un serveur d'identité, qui écoute sur le port 113.
Et puis ident a travaillé.
la source
Hmmm ...
Si vous pouvez vous connecter avec le nom d'utilisateur et le mot de passe dans pgAdminIII mais que vous ne pouvez pas vous connecter,
psql
ces deux programmes se connectent probablement différemment à la base de données.[Si vous vous connectez à différentes bases de données, essayez d'abord de vous connecter à la même base de données. Voir ci-dessous.]
De PostgreSQL: Documentation: 9.3: psql :
Si vous n'exécutez pas quelque chose comme
psql ... -h host_name ...
, et que vous exécutez Ubuntu,psql
vous devez vous connecter via un socket de domaine Unix, donc PostgreSQL n'est probablement pas configuré pour autoriser l'une des méthodes d'authentification par mot de passe pour l' utilisateur postgres .Vous pouvez tester cela en exécutant:
sudo -u postgres psql
Si ce qui précède fonctionne, votre serveur est probablement configuré pour utiliser l' authentification par les pairs pour les connexions locales par l' utilisateur postgres , c'est-à-dire demander au système d'exploitation votre nom d'utilisateur pour confirmer que vous êtes postgres .
C'est donc probablement votre fichier pg_hba.conf
Le chemin complet du fichier sera quelque chose comme /etc/postgresql/9.3/main/pg_hba.conf . Vous pouvez le voir par exemple
sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more
.Si vous omettez le nom d'hôte dans votre
psql
commande, vous devriez pouvoir vous connecter si vous ajoutez l'entrée suivante à votre fichier pg_hba.conf :[Les lignes commentées du fichier pg_hba.conf commencent par
#
.]Si vous êtes incluez le nom d'hôte dans votre
psql
commande, ajoutez cette entrée à la place:Vous devez mettre l'entrée avant que toute autre entrée ne corresponde à votre connexion via
psql
. En cas de doute sur l'endroit où le mettre, placez-le juste avant la première ligne non commentée.En savoir plus sur pg_hba.conf
De PostgreSQL: Documentation: 9.3: Le fichier pg_hba.conf [gras souligné]:
Notez que les enregistrements ne correspondent pas à la méthode d'authentification. Donc, si votre fichier pg_hba.conf contient l'entrée suivante:
Vous ne pourrez alors pas vous connecter via:
psql -u postgres
Sauf si l'une de ces entrées se trouve dans votre fichier pg_hba.conf au - dessus de l'entrée précédente:
la source
Dans mon cas, solution ici: (pour les personnes concernées) connectez-vous à postgres:
Cordialement
la source
Le problème est toujours votre fichier pg_hba.conf. Cette ligne: Vous pouvez trouver ce fichier dans / etc / postgres / varion / main
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
La méthode d'authentification par les pairs fonctionne en obtenant le nom d'utilisateur du système d'exploitation du client à partir du noyau et en l'utilisant comme nom d'utilisateur de base de données autorisé (avec mappage de nom d'utilisateur facultatif). Cette méthode n'est prise en charge que sur les connexions locales.
Authentification par mot de passe
Les méthodes d'authentification par mot de passe sont md5 et mot de passe. Ces méthodes fonctionnent de manière similaire, sauf pour la façon dont le mot de passe est envoyé via la connexion, à savoir MD5 haché et texte clair respectivement.
Si vous êtes préoccupé par les attaques par "reniflement" de mot de passe, alors md5 est préférable. Un mot de passe simple doit toujours être évité si possible. Cependant, md5 ne peut pas être utilisé avec la fonction db_user_namespace. Si la connexion est protégée par le cryptage SSL, le mot de passe peut être utilisé en toute sécurité (bien que l'authentification par certificat SSL puisse être un meilleur choix si l'on dépend de l'utilisation de SSL).
Après avoir modifié ce fichier, n'oubliez pas de redémarrer votre serveur PostgreSQL. Si vous êtes sous Linux, ce serait
sudo service postgresql restart.
la source
Pour fedora26 et postgres9.6
Tout d'abord, connectez-vous en tant qu'utilisateur root puis entrez dans psql avec les commandes suivantes
puis
dans
psql
trouver l'emplacement de hba_file ==> signifiepg_hba.conf
dans le fichier
pg_hba.conf
changer l'accès utilisateur à cela source
ma solution sur PostgreSQL 9.3 sur Mac OSX dans le shell bash était d'utiliser
sudo
pour aller dans le dossier de données, puis d'ajouter les lignes nécessaires aupg_hba.conf
fichier pour permettre à tous les utilisateurs de faire confiance et de pouvoir se connecter. C'est ce que j'ai fait :la source
Si vous avez fait tout cela et que cela ne fonctionne toujours pas, vérifiez l'expiration pour cet utilisateur:
L'authentification par mot de passe Postgres échoue
la source
J'ai passé plus de temps à résoudre cette erreur que je tiens à admettre.
L'ordre de configuration de l'authentification dans pg_hba.conf est pertinent dans votre cas, je pense. Le fichier de configuration par défaut comprend plusieurs lignes dans une installation vanilla. Ces valeurs par défaut peuvent correspondre aux conditions de vos tentatives d'authentification, ce qui entraîne l'échec de l'authentification. Il échoue quelle que soit la configuration supplémentaire ajoutée à la fin du fichier .conf.
Pour vérifier quelle ligne de configuration est utilisée, assurez-vous de consulter le fichier journal par défaut pour les messages. Vous pourriez voir quelque chose comme ça
Il s'avère que cette ligne par défaut est à l'origine du rejet.
essayez de le commenter.
la source
Un hack autour de cela est d'éditer pg_hba.conf
Pour temporairement
À ce stade, vous avez terminé. Pour plus de sécurité, alors allez
puis revenez en arrière et définissez pg_hba.conf sur
la source
J'ai eu un problème similaire et je l'ai corrigé dans pg_hba.conf lors de la suppression de toutes les méthodes d' identification même pour l'adresse IP6 (malgré que je n'ai que IP4 sur la machine).
la source
J'ai eu le même problème après avoir suivi ceci: Configuration de PostgreSQL pour le développement de Rails dans Ubuntu 12.04
J'ai essayé les autres réponses mais tout ce que j'avais à faire était dans: "config / database.yml"
la source
Si vous l'utilisez sur CentOS, vous devrez peut-être recharger postgres après avoir fait les solutions ci-dessus:
la source
postgresql
systemctl status | grep postgres
J'ai dû réinstaller pdAdmin pour résoudre ce problème
la source
Pour Windows si vous ne souhaitez pas modifier pb_gba.conf, c'est-à-dire laisser la méthode à MD5 (par défaut), créez un nouvel utilisateur, en exécutant cette requête dans l'éditeur de requêtes dans PGadmin
puis en cmd
où dbname est votre db dans postgresql
la source
Cela a fonctionné pour moi: http://tecadmin.net/fatal-ident-authentication-failed-for-user-postgres/#
la source