PgAdmin III - Comment se connecter à la base de données lorsque le mot de passe est vide?


21

J'ai installé PostgreSQL 9.1 sur mon PC (Win 7). J'ai une petite application Java qui s'y connecte avec succès avec login=saet password="". La connexion fonctionne.

Cependant, il est refusé par PgAdmin III lui-même. Je reçois:

Error connecting to the server: fe_sendauth: no password supplied

Comment me connecter à ma base de données depuis PgAdmin III avec un mot de passe vide?

ÉDITER

Ce n'est qu'un test, pas un code de production.


Je ne sais pas avec certitude, mais il est facile d'imaginer que PgAdmin ne prend pas en charge cela.
Peter Eisentraut

votre application Java est-elle sur le même client que pgAdmin?
Jack Douglas

Réponses:


10

Je peux me connecter à mon instance postgres à partir de pgAdmin III sans mot de passe pour tout utilisateur, y compris les superutilisateurs tels que postgres.

Parce que vous vous connectez correctement à partir d'un autre client, il n'y a aucune raison pour que vous ne puissiez pas vous connecter à partir de pgAdmin s'ils sont sur le même poste de travail - à moins qu'une règle de pare-feu sur le client lui-même n'autorise un programme mais pas un autre.

Si le problème est spécifique à ce client, vous devrez peut-être modifier un ou plusieurs des éléments suivants:

  • pg_hba.conf
héberger tous les 192.168.0.nnn / 32 confiance
  • postgresql.conf
listen_addresses = '*'
  • le pare-feu sur votre serveur postgres, par exemple iptables:
-A INPUT -s 192.168.0.nnn -m state --state NEW -j ACCEPT

Mais je vous recommande de ne rien faire de tout cela. Le manuel dit ce qui suit avec raison:

l'authentification de confiance ne convient aux connexions TCP / IP que si vous faites confiance à chaque utilisateur de chaque machine autorisé à se connecter au serveur par les lignes pg_hba.conf qui spécifient la confiance. Il est rarement raisonnable d'utiliser la confiance pour toutes les connexions TCP / IP autres que celles de localhost (127.0.0.1).

Envisagez plutôt:

  • en utilisant un mot de passe et une identification md5
  • tunneling port 5432 sur ssh

31

J'ai trouvé cette réponse ailleurs.

Si votre base de données se trouve sur l'hôte local, essayez de laisser le champ hôte vide dans la connexion au lieu d'utiliser «localhost» ou «127.0.0.1». Cela indique à PgAdmin de se connecter via le socket Unix local au lieu de TCP.


Ajoutons que la question d'origine concernait un système Windows.
dezso

3
Ah c'était exactement ça. Laisser l'hôte vierge a fonctionné.
basicdays

Vous ne pouvez pas laisser ce champ vide, il est obligatoire.
Athlan

Il semble que laisser le champ hôte vide ne fonctionne que si vous avez un rôle dans pg nommé comme nom d'utilisateur de votre système (sous Linux). Sinon, je suppose que des cartes d'utilisateurs sont nécessaires.
a1an

Parfait! Avec une nouvelle installation de postgresql et pgadmin, changer pg_hba.confpour dire trustau lieu de peerdans cette ligne - local all postgres trust, et laisser les champs hôte et mot de passe vides dans pgadmin fait tout fonctionner! Je souhaite que pgadmin ajoute une case à cocher pour passer aux sockets au lieu de cette interface utilisateur difficile à découvrir.
Anupam Jain
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.