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.

Jérôme Verstrynge
la source
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
question similaire
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
Jack Douglas
la source
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.

Alex Jodidio
la source
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