aucune entrée pg_hba.conf pour l’hôte

J’obtiens l’erreur suivante lorsque j’essaie de me connecter avec DBI

 DBI connect ('database = chaosLRdb; host = 192.168.0.1; port = 5433', 'postgres', ...) 
 Échec: FATAL: Aucune entrée pg_hba.conf pour l'hôte "192.168.0.1", utilisateur "postgres", firebase database "chaosLRdb", SSL désactivé

Voici mon fichier pg_hba.conf:

# "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 host all postgres 127.0.0.1/32 trust host all postgres 192.168.0.1/32 trust host all all 192.168.0.1/32 trust host all all 192.168.0.1/128 trust host all all 192.168.0.1/32 md5 host chaosLRdb postgres 192.168.0.1/32 md5 local all all 192.168.0.1/32 trust 

Mon code perl est

 #!/usr/bin/perl-w use DBI; use FileHandle; print "Start connecting to the DB...\n"; @ary = DBI->available_drivers(true); %drivers = DBI->installed_drivers(); my $dbh = DBI->connect("DBI:PgPP:database=chaosLRdb;host=192.168.0.1;port=5433", "postgres", "chaos123"); 

Puis-je savoir ce qui me manque ici?

Dans votre fichier pg_hba.conf, je vois des lignes incorrectes et déroutantes:

 # fine, this allows all dbs, all users, to be trusted from 192.168.0.1/32 # not recommend because of the lax permissions host all all 192.168.0.1/32 trust # wrong, /128 is an invalid netmask for ipv4, this line should be removed host all all 192.168.0.1/128 trust # this conflicts with the first line # it says that that the password should be md5 and not plaintext # I think the first line should be removed host all all 192.168.0.1/32 md5 # this is fine except is it unnecessary because of the previous line # which allows any user and any database to connect with md5 password host chaosLRdb postgres 192.168.0.1/32 md5 # wrong, on local lines, an IP cannot be specified # remove the 4th column local all all 192.168.0.1/32 trust 

Je pense que si vous avez défini le mot de passe, cela pourrait fonctionner si vous coupez les lignes. Pour obtenir le md5, vous pouvez utiliser perl ou le script shell suivant:

  echo -n 'chaos123' | md5sum > d6766c33ba6cf0bb249b37151b068f10 - 

Donc, votre ligne de connexion aimerait quelque chose comme:

 my $dbh = DBI->connect("DBI:PgPP:database=chaosLRdb;host=192.168.0.1;port=5433", "chaosuser", "d6766c33ba6cf0bb249b37151b068f10"); 

Pour plus d’informations, voici la documentation du fichier pg_hba.conf de postgres 8.X.

Si vous pouvez changer cette ligne:

 host all all 192.168.0.1/32 md5 

Avec ça:

 host all all all md5 

Vous pouvez voir résoudre ce problème.

Mais une autre action est que votre port postgresql (5432) est très ouvert aux mots de passe essayant avec des pirates (peut-être qu’ils peuvent trouver). Vous pouvez changer votre port postgresql 5432 à ‘33333’ ou autre. Donc, ils ne peuvent pas connaître cette configuration.

Votre configuration de serveur postgres semble correcte

 héberger tous les 127.0.0.1/32 md5
 héberger tout confiance 192.168.0.1/32

Cela devrait autoriser l’access du client au serveur postgres. Donc, cela m’amène à croire que le nom d’utilisateur / mot de passe est ce qui échoue.

Testez ceci en créant un utilisateur spécifique pour cette firebase database

 createuser -a -d -W -U postgres chaosuser

Ajustez ensuite votre script perl pour utiliser l’utilisateur nouvellement créé

 mon $ dbh = DBI-> connect ("DBI: PgPP: firebase database = chaosLRdb; hôte = 192.168.0.1; port = 5433", "chaosuser", "chaos123");

Pour résoudre ce problème, vous pouvez essayer ceci.

Vous devez d’abord connaître votre pg_hba.conf et écrire:

 local all all md5 

après ce redémarrage du serveur pg:

 postgresql restart 

ou

 sudo /etc/init.d/postgresql restart 

Pour ceux qui ont le même problème en essayant de se connecter à la firebase database locale et d’essayer
con = psycopg2.connect(database="my_db", user="my_name", password="admin") , essayez de transmettre le paramètre supplémentaire, ainsi les éléments suivants m’ont sauvé un jour:
con = psycopg2.connect(database="my_db", user="my_name", password="admin", host="localhost")

vérifiez également la variable PGHOST:

ECHO $ ​​PGHOST

pour voir si elle correspond au nom de la machine locale

Si vous obtenez une erreur comme celle ci-dessous:

 OperationalError: FATAL: no pg_hba.conf entry for host "your ipv6", user "username", database "postgres", SSL off 

puis ajoutez une entrée comme celle-ci, avec votre adresse mac.

 host all all [your ipv6]/128 md5 

BTW, dans mon cas, il était que je devais spécifier l’utilisateur / pwd dans l’URL, pas en tant que propriétés indépendantes, ils ont été ignorés et mon utilisateur du système d’exploitation a été utilisé pour se connecter

Ma config se trouve dans un fichier WebSphere 8.5.5 server.xml

     

Cela ne fonctionnerait pas et recevait l’erreur: