psql: FATAL: échec de l'authentification Ident pour Postgres utilisateurs"

j'ai installé PostgreSQL et pgAdminIII sur ma boîte karmique Ubuntu.

je suis capable d'utiliser pgAdminIII avec succès (c'est-à-dire Se connecter/Se connecter), mais quand 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"

quelqu'un maintenant comment résoudre ce problème?

336
demandé sur Peter DeWeese 2010-05-31 13:08:14

21 réponses

avez-vous paramétré pg_hba.conf?

voir https://help.ubuntu.com/stable/serverguide/postgresql.html comment le faire.

172
répondu Frank Heikens 2015-05-08 06:32:56

les étapes suivantes fonctionnent pour une nouvelle installation de postgres 9.1 sur Ubuntu 12.04. (Travaillé pour postgres 9.3.9 sur Ubuntu 14.04 aussi.)

par défaut, postgres crée un utilisateur nommé 'postgres'. On se connecte en tant qu'elle, et on lui donne un mot de passe.

$ sudo -u postgres psql
\password
Enter password: ...
...

déconnexion de psql en tapant \q ou ctrl+d . Puis nous nous connectons en tant que'postgres'. Le -h localhost part est important : il dit le psql client que nous souhaitons connecter en utilisant une connexion TCP (qui est configurée pour utiliser l'authentification par mot de passe), et non par une connexion par pair (qui ne se soucie pas du mot de passe).

$ psql -U postgres -h localhost
389
répondu Manav 2016-04-21 00:48:09

éditez le fichier /etc/postgresql/8.4/main/pg_hba.conf et remplacez ident ou peer par md5 ou trust , selon que vous voulez qu'il demande un mot de passe sur votre propre ordinateur ou non. Puis rechargez le fichier de configuration avec:

/etc/init.d/postgresql reload
151
répondu Danny Milosavljevic 2013-07-18 21:44:03

vous obtenez cette erreur parce que vous ne réussissez pas l'authentification du client. D'après le message d'erreur, vous avez probablement la configuration par défaut de postgres, qui définit la méthode d'authentification du client à "IDENT" pour toutes les connexions PostgreSQL.

vous devriez certainement lire la section 19.1 authentification du Client dans le manuel PostgreSQL pour mieux comprendre les paramètres d'authentification disponible (pour chaque enregistrement dans pg_hba.conf ), Mais voici l'extrait pertinent pour aider avec le problème que vous avez (de la version 9.5 manuel ):

confiance

Autoriser la connexion sans condition. Cette méthode permet à quiconque peut se connecter au serveur de base de données PostgreSQL pour se connecter Utilisateur PostgreSQL qu'ils souhaitent, sans avoir besoin d'un mot de passe ou de toute autre authentification. Voir la Section 19.3.1 pour plus de détails.

rejet

rejetez la connexion inconditionnellement. Ceci est utile pour "filtrage "certains hôtes d'un groupe, par exemple un rejet de ligne pourrait bloquer un hôte spécifique à partir de la connexion, tandis qu'une ligne ultérieure permet hôtes restants dans un réseau spécifique pour se connecter.

md5

exigent du client de fournir un mot de passe double-MD5-hashé pour Authentication. Voir la Section 19.3.2 pour plus de détails.

mot de passe

exiger du client de fournir un mot de passe non crypté pour Authentication. Puisque le mot de passe est envoyé en texte clair sur le réseau, cela ne doit pas être utilisé sur des réseaux non fiables. Voir La Section 19.3.2 pour plus de détails.

esg

utiliser GSSAPI pour authentifier l'utilisateur. Ceci n'est disponible que pour TCP / IP connexion. Voir la Section 19.3.3 pour plus de détails.

sspi

utilise SSPI pour authentifier l'utilisateur. Ceci est uniquement disponible sur Windows. Voir la Section 19.3.4 pour plus de détails.

ident

obtenir le fonctionnement nom d'utilisateur du système du client en contactant le ident serveur sur le client et vérifier s'il correspond à la demande la base de données nom d'utilisateur. L'authentification Ident ne peut être utilisée que sur TCP / IP connexion. Lorsqu'il est spécifié pour les connexions locales, l'authentification d'hôte sera utilisé à la place. Voir la Section 19.3.5 pour plus de détails.

par les pairs

obtenir le nom d'utilisateur du système d'exploitation du client système et vérifier si il correspond au nom d'utilisateur de la base de données demandée. Ce est uniquement disponible pour les connexions locales. Voir la Section 19.3.6 pour détail.

ldap

authentifier à l'aide d'un serveur LDAP. Voir la Section 19.3.7 pour plus de détails.

rayon

authentifier à l'aide d'un serveur RADIUS. Voir la Section 19.3.8 pour plus de détails.

cert

authentifier en utilisant les certificats clients SSL. Voir la Section 19.3.9 pour détail.

pam

authentifier à L'aide du service de Modules D'authentification branchés (PAM) fournis par le système d'exploitation. Voir la Section 19.3.10 pour plus de détails.

So ... pour résoudre le problème que vous rencontrez, vous pourriez faire l'un des suivants:

  1. modifier la(Les) méthode (s) d'authentification définie (s) dans votre pg_hba.conf fichier trust , md5 , ou password (selon votre sécurité et la simplicité des besoins) pour la connexion locale d'enregistrements définis dans.

  2. mise à Jour pg_ident.conf à la carte votre système d'exploitation pour les utilisateurs Les utilisateurs de PostgreSQL et leur accorder les privilèges d'accès correspondants, en fonction de vos besoins.

  3. 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 que vous souhaitez accorder l'accès. Si un l'utilisateur est déjà authentifié par L'OS et connecté, PostgreSQL ne nécessitera pas d'authentification supplémentaire et accordera l'accès à ce utilisateur sur la base des privilèges (rôles) qui lui sont attribués dans le la base de données. C'est la configuration par défaut.

Note: l'emplacement de pg_hba.conf et pg_ident.conf dépend OS.

70
répondu Haig Bedrosian 2017-09-22 17:24:51

ajoutant Simplement le -h localhost bit a été tout à moi tenus de travailler

42
répondu boulder_ruby 2013-09-10 18:51:42

vous pouvez définir la variable d'environnement PGHOST=localhost :

$ psql -U db_user db_name
psql: FATAL:  Peer authentication failed for user "db_user"

$ export PGHOST=localhost
$ psql -U db_user db_name

Password for user mfonline:
14
répondu Ivan Trechyokas 2014-03-13 09:25:32

dans le cas où aucun de ce qui précède ne fonctionne pour vous:



J'ai fait pas mal d'installations Postgres, mais j'ai été forcé aujourd'hui sur un système RedHat 6.5 (installation de Postgres 9.3). Mon hba typique.la configuration de conf 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. Ajouter la ligne:

host    all             all             ::1/128                 password

m'a permis de me connecter avec succès.

11
répondu Ethan Brown 2015-02-21 03:38:58

j'ai trouvé que je devais installer un serveur d'identité, qui écoute sur le port 113.

sudo apt-get install pidentd
sudo service postgresql restart

et puis ident a travaillé.

10
répondu Dustin Kirkland 2013-05-06 16:54:28

le problème est toujours votre pg_hba.fichier conf. Cette ligne: Vous pouvez trouver ce fichier dans /etc/postgresql/varion/main

local   all             postgres                                peer
Should be

local   all             postgres                                md5

ce sont de brèves descriptions des deux options selon les documents officiels PostgreSQL sur les méthodes d'authentification.

"151920920 par les Pairs" authentification

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 base de données autorisée. nom d'utilisateur (avec option de mappage de noms d'utilisateurs). Cette méthode n'est supportée que sur les connexions locales.

authentification par mot de passe

les méthodes d'authentification basées sur le mot de passe sont md5 et password. Ces méthodes fonctionnent de la même manière sauf pour la façon dont le mot de passe est envoyé à travers la connexion, à savoir MD5-hashed et clair-texte respectivement.

si vous êtes du tout préoccupé par les attaques" sniffing " de mot de passe, alors md5 est préférable. Le mot de passe simple doit toujours être évité si possible. Cependant, md5 ne peut pas être utilisé avec la fonctionnalité db_user_namespace. Si la connexion est protégée par le cryptage SSL, alors le mot de passe peut être utilisé en toute sécurité (bien que L'authentification du 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.

7
répondu Suneel Kumar 2014-07-18 11:53:07

de toutes les réponses ci-dessus rien n'a fonctionné pour moi. J'ai dû changer manuellement le mot de passe de l'utilisateur dans la base de données et ça a soudainement fonctionné.

psql -U postgres -d postgres -c "alter user produser with password 'produser';"

j'ai utilisé les réglages suivants:"

pg_hba.conf

local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            password  
# IPv6 local connections:
host    all             all             ::1/128                 password
La connexion

est finalement réussie pour la commande suivante:

psql -U produser -d dbname -h localhost -W 
7
répondu Joseph Persie 2015-10-03 22:07:29

ma solution sur PostgreSQL 9.3 sur Mac OSX en shell bash était d'utiliser sudo pour aller dans le dossier de données, puis d'ajouter les lignes nécessaires au fichier pg_hba.conf pour permettre à tous les utilisateurs d'être fiables et capables de se connecter. C'est ce que j'ai fait:

# in bash_profile edit PGDATA environmental variable
open ~/.bash_profile

# append this line to bash_profile
export PGDATA="/Library/PostgreSQL/9.3/data"

# reload bash_profile
source ~/.bash_profile

# open pg_hba.conf in vim
sudo vi /Library/PostgreSQL/9.3/data/pg_hba.conf

# append these two lines to the end of the pg_hba.conf file
local   all   all                  trust
host    all   all   127.0.0.1/32   trust

# can now login as user in bash
psql -d <db_name> -U <user_name> -W
6
répondu Aaron Lelevier 2013-10-16 13:48:58

Hmmm ...

si vous pouvez vous connecter avec le nom d'utilisateur et le mot de passe dans pgAdminIII mais vous ne pouvez pas vous connecter avec psql alors ces deux programmes se connectent probablement à la base de données différemment.

[si vous vous connectez à des bases de données différentes, essayez d'abord de vous connecter à la même base de données. Voir ci-dessous.]

From PostgreSQL: Documentation: 9.3: psql :

si vous omettez le nom d'hôte, psql se connectera via une socket Unix-domain à un serveur sur l'hôte local, ou via TCP/IP à localhost sur les machines qui n'ont pas de sockets Unix-domain.

si vous n'utilisez pas quelque chose comme psql ... -h host_name ... , et que vous utilisez Ubuntu, psql devrait être connecté via une socket Unix-domain, donc PostgreSQL n'est probablement pas configuré pour permettre l'une des méthodes d'authentification par mot de passe pour les postgres de l'utilisateur.

vous pouvez le tester en exécutant:

sudo -u postgres psql

si ce qui précède fonctionne, votre serveur est probablement configuré pour utiliser peer authentification pour les connexions locales par l'utilisateur postgres , c'est-à-dire demander au système D'exploitation de votre nom d'utilisateur pour confirmer que vous êtes postgres .

donc C'est probablement votre pg_hba.conf Fichier

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 commande psql , vous devriez pouvoir vous connecter si vous ajoutez l'entrée suivante à votre pg_hba.conf fichier:

# Connection type   Database   User       IP addresses   Method
local               all        postgres                  md5

[Lignes commentées dans le pg_hba.conf début du fichier avec # .]

si vous êtes en incluant le nom d'hôte dans votre commande psql , Ajoutez cette entrée à la place:

# Connection type   Database   User       IP addresses   Method
host                all        postgres   127.0.0.1/32   md5

vous devez mettre l'entrée avant toute autre entrée sont appariés pour votre connexion via psql . En cas de doute sur l'endroit où le placer, mettez-le juste avant la première ligne sans commentaire.

plus d'informations sur pg_hba.conf

à Partir de PostgreSQL: Documentation: 9.3: Le pg_hba.Fichier conf [gras c'est moi qui souligne]:

le premier enregistrement avec une correspondance type de connexion , adresse du client , base de données demandée , et nom d'utilisateur est utilisé pour effectuer l'authentification. Il n'y a pas de" passe-partout "ou de" sauvegarde": si un enregistrement est choisi et que l'authentification échoue, les enregistrements suivants ne sont pas pris en compte. Si aucun enregistrement ne correspond, l'accès est refusé.

notez que les enregistrements sont et non appariés selon la méthode d'authentification. Donc, si votre pg_hba.le fichier conf contient l'entrée suivante:

# Connection type   Database   User       IP addresses   Method
local               all        postgres                  peer

puis vous ne sera pas être en mesure de se connecter via:

psql -u postgres

sauf si l'une de ces entrées est dans votre pg_hba.conf fichier au-dessus l'ancienne entrée:

# Connection type   Database   User       IP addresses   Method
local               all        postgres                  md5
local               all        postgres                  password   # Unencrypted!
local               all        all                       md5
local               all        all                       password   # Unencrypted!
6
répondu Kenny Evitt 2015-06-11 04:11:28

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

4
répondu Brenda J. Butler 2017-05-23 11:55:01

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 inclut plusieurs lignes dans une installation standard. Ces valeurs par défaut peuvent correspondre aux conditions de vos tentatives d'authentification résultant en un échec d'authentification. Il échoue quelle que soit la configuration supplémentaire ajoutée à la fin de la .fichier conf.

à vérifiez quelle ligne de configuration est utilisée.assurez-vous de regarder le fichier de log par défaut pour les messages. Vous pourriez voir quelque chose comme ça

LOG:  could not connect to Ident server at address "127.0.0.1", port 113: Connection refused
FATAL:  Ident authentication failed for user "acme" 
DETAIL:  Connection matched pg_hba.conf line 82: "host     all             all             127.0.0.1/32            ident"

Il s'avère que cette ligne par défaut est à l'origine du rejet.

host    all             all             127.0.0.1/32            ident

essayez de le commenter.

4
répondu Jeremy Whiting 2014-09-18 15:50:02

un hack autour de cela est d'éditer pg_hba.conf

sudo vi /etc/postgresql/9.3/main/pg_hba.conf

à Temporairement

# Database administrative login by Unix domain socket
local   all             postgres                                   trust

à ce point, vous avez terminé. Pour la sécurité, puis aller et

sudo -u postgres psql template1
ALTER USER postgres with encrypted password 'your_password';

puis revenir en arrière et mettre pg_hba.conf retour à

# Database administrative login by Unix domain socket
local   all             postgres                                   md5
3
répondu ntg 2014-09-16 16:37:09

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 ident même pour l'adresse IP6 (bien que je n'ai que IP4 sur la machine).

host all all 127.0.0.1/32 password
host all all ::1/128 password
#for pgAdmin running at local network
host all all 192.168.0.0/24 md5
1
répondu TMa 2016-02-22 15:56:10

dans mon cas, solution ici: (pour les personnes concernées) connexion à postgres:

sudo -i -u postgres
psql
ALTER USER postgres WITH PASSWORD 'postgres'; # type your password here

concerne

1
répondu VanThaoNguyen 2017-09-09 18:16:18

pour fedora26 et postgres9.6

tout d'abord, se connecter en tant que root utilisateur

puis entrer à psql par les commandes suivantes

$su postgres

puis tapez $psql

dans psql trouver l'emplacement de hba_file==> signifie pg_hba.conf

postgres= # show hba_file ;

hba_file

/ etc/postgresql/9.6/main / pg_hba.conf

(1 rangée)

dans le fichier pg_hba.conf modifier l'accès de l'utilisateur à ce

host all 127.0.0.1 / 32 md5

1
répondu mohsen.noor 2017-10-24 10:05:41

j'ai eu la même erreur après avoir suivi ceci: PostgreSQL setup for Rails development in Ubuntu 12.04

j'ai essayé les autres réponses mais tout ce que j'avais à faire était dans: " config/database.yml "

development:
  adapter: postgresql
  encoding: unicode
  database: (appname)_development
  pool: 5
  username: (username you granted appname database priviledges to)
  password:
0
répondu Daniel 2014-01-13 06:02:44

si vous l'utilisez sur CentOS,vous pouvez avoir besoin de recharger postgres après avoir fait les solutions ci-dessus:

systemctl restart postgresql-9.3.service
0
répondu Jaswinder 2017-02-21 02:38:12

ça a marché pour moi : http://tecadmin.net/fatal-ident-authentication-failed-for-user-postgres / #

local   all             postgres                                trust
local   all             myapp_usr                               trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
#host    all             all             ::1/128                 trust
-2
répondu Ing. M.D'Ambrosio 2017-11-14 10:23:27