web-dev-qa-db-fra.com

se connecter au serveur PostgreSQL: FATAL: pas d'entrée pg_hba.conf pour l'hôte

Bonjour, j'essaie d'exécuter un site Web qui m'a été envoyé mais après cela, cette erreur est apparue

connect to PostgreSQL server: FATAL: no pg_hba.conf entry for Host "4X.XXX.XX.XXX", user "userXXX", database "dbXXX", SSL off in C:\xampp\htdocs\xmastool\index.php on line 37

après Google il dit que j'ai juste besoin d'ajouter une entrée dans le fichier pg_hba.conf pour cet utilisateur particulier. c'est mon fichier pg_hba.conf.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
local dbXXX userXXX md5
Host    dbXXX  userXXX  XX.XXX.XXX.XXX           md5
Host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
Host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#Host    replication     postgres        127.0.0.1/32            md5
#Host    replication     postgres        ::1/128                 md5

mais après cela, l'erreur persiste. J'ai redémarré mon serveur XAMPP plusieurs fois mais aucun changement n'apparaît. Merci d'avance

204
Jin

Ajoutez ou modifiez la ligne suivante dans votre postgresql.conf:

listen_addresses = '*'

Ajoutez la ligne suivante comme première ligne de pg_hba.conf. Il permet d'accéder à toutes les bases de données pour tous les utilisateurs avec un mot de passe crypté:

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
Host  all  all 0.0.0.0/0 md5

Redémarrez Postgresql après l'avoir ajouté avec service postgresql restart ou la commande équivalente pour votre configuration.

244
Jérôme Radix

Cette solution fonctionne pour IPv4/IPv6

nano /var/lib/pgsql/data/pg_hba.conf

ajouter à la finale

Host all all      ::1/128      md5
Host all postgres 127.0.0.1/32 md5

puis redémarrez le service postgresql

/etc/init.d/postgresql restart
25
Jose Nobile

La façon dont j'ai résolu cela était:

Ajout de la ligne comme ci-dessous dans pg_hba.conf:

hostnossl    all          all            0.0.0.0/0  trust        

et cela a été modifié dans postgresql.conf, comme montré:

listen_addresses = '*'  

J'ai eu cette instance en cours d'exécution sur un Centos 7. et Postgres 9.5 dans un VM in Azure, étant donné cela était un POC (preuve de concept), vous ne voudrez pas vous connecter sans SSL dans votre environnement de production actuel.

Pour me connecter à l'instance que j'utilisais pgAdmin 4 sur macOS Sierra.

13
Roberto Lopez

Installation de Fresh Postgres 9.5, Ubuntu.

La clé était le type de connexion local, car psql utilise une connexion socket de domaine.

pg_hba.conf

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
local all all md5
Host  all  all 0.0.0.0/0 md5
6
willianpts
  1. Ajoutez la ligne suivante au bas de pg_hba.conf:

    hostnossl all all 0.0.0.0/0 md5

  2. Ajoutez/modifiez la ligne dans postgresql.conf:

    listen_addresses = '*'

  3. ASSUREZ-VOUS QUE l'utilisateur qui se connecte a un mot de passe: (Exemple connectez l'utilisateur nommé postgres)

    une. Exécutez la commande psql suivante avec le compte utilisateur postgres:

    Sudo -u postgres psql postgres

    b. Définissez le mot de passe:

    # \password postgres

enter image description here

4
nguyên

J'ai eu la même erreur lorsque j'ai essayé de me connecter à une base de données locale à l'aide d'un tunnel SSH. Je l'ai résolu en changeant le nom d'hôte de localhost en 127.0.0.1.

3
Finesse

Instructions pour les utilisateurs Debian.

Connectez-vous en tant qu'utilisateur posgres:

$ Sudo su - postgres

Obtenez l'emplacement de pg_hba.conf en interrogeant la base de données:

$ psql -c "SHOW hba_file;"

              hba_file               
-------------------------------------
/etc/postgresql/11/main/pg_hba.conf
(1 row)

Ouvrez pg_hba.conf:

nano /etc/postgresql/11/main/pg_hba.conf

Ajoutez la configuration où il est dit "Mettez votre configuration actuelle ici":

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
Host  all  all 0.0.0.0/0 md5

Déconnectez-vous de votre utilisateur:

$ exit
logout

Redémarrez votre serveur postgres pour que les modifications prennent effet:

$ Sudo systemctl restart postgresql
2
Eugene Kulabuhov

Trouvez le fichier de configuration correct:

su - postgres -c "psql -t -P format=unaligned -c 'show hba_file';"

Ajoutez ce qui suit à la fin du fichier:

local all all peer

Redémarrez ensuite votre application PostgreSQL:

/bin/systemctl restart postgresql*.service
2
Feriman

Cela ci-dessous a fonctionné pour moi: (pg_hba.conf)

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only     
local   all             all                                     md5
# IPv4 local connections:
Host    all             all             127.0.0.1/32            trust
Host    all             all             0.0.0.0/0               trust
# IPv6 local connections:
Host    all             all             ::1/128                 trust
Host    all             all             0.0.0.0/0               trust

confiance

Autorisez la connexion sans condition. Cette méthode permet à toute personne pouvant se connecter au serveur de base de données PostgreSQL de se connecter en tant qu'utilisateur PostgreSQL de son choix, sans avoir besoin d'un mot de passe ou de toute autre authentification.

md5

Exiger que le client fournisse un mot de passe haché à double MD5 pour l'authentification.

référez-vous pour plus ici

1
Ravistm

Dans mon cas, j'ai dû ajouter la ligne exacte comme suggéré par les informations d'erreur. Impossible de le contourner en ajoutant "tous" les utilisateurs avec toutes les adresses IP comme règle. Maintenant, c'est comme:

PosgreSQL 10.5 sur CentOS 7.

# IPv4 local connections:
Host    all             all             127.0.0.1/32                    md5
Host    <db_name>       postgres        <my_client_machine_ip>/32       md5
1
WesternGun