web-dev-qa-db-fra.com

pas d'entrée pg_hba.conf pour l'hôte

Je reçois une erreur suivante lorsque j'essaie de me connecter à l'aide de DBI

 DBI connect ('database = chaosLRdb; Host = 192.168.0.1; port = 5433', 'postgres', ...) 
 A échoué: FATAL: aucune entrée de pg_hba.conf pour l'hôte "192.168.0.1", utilisateur "postgres", base de données "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?

47
Priya

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 soupçonne que si vous avez md5 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  -

Alors, 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 .

32
Gray

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 si cela résout le problème.

Mais une autre considération est que votre port postgresql (5432) est très ouvert aux attaques par mot de passe avec des pirates (peut-être qu’ils peuvent forcer le mot de passe de force) Vous pouvez modifier votre port 5432 postgresql en "33333" ou une autre valeur, afin qu'ils ne puissent pas connaître cette configuration.

15
Hasan Tuna Oruç

Votre configuration de serveur postgres semble correcte

Host    all         all         127.0.0.1/32          md5
Host    all         all         192.168.0.1/32        trust
Cela devrait permettre l’accès du client au serveur postgres. Cela me porte donc à croire que le nom d'utilisateur/mot de passe est en train d'échouer.

Testez-le en créant un utilisateur spécifique pour cette base de données

createuser -a -d -W -U postgres chaosuser

Puis ajustez votre script Perl pour utiliser le nouvel utilisateur créé

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

6
adam

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

vous devez d’abord trouver votre pg_hba.conf et écrire:

local all all md5

après ce redémarrage pg serveur:

postgresql restart

ou

Sudo /etc/init.d/postgresql restart
2
uma

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
0
shiddu mageppa

BTW, dans mon cas, c’était que je devais spécifier l’utilisateur/pwd dans l’URL, et non comme propriétés indépendantes, elles étaient ignorées et mon utilisateur de système d’exploitation était utilisé pour se connecter

Ma configuration est dans un fichier server.xml WebSphere 8.5.5

<dataSource 
    jndiName="jdbc/tableauPostgreSQL" 
    type="javax.sql.ConnectionPoolDataSource">
    <jdbcDriver 
        javax.sql.ConnectionPoolDataSource="org.postgresql.ds.PGConnectionPoolDataSource" 
        javax.sql.DataSource="org.postgresql.ds.PGPoolingDataSource" 
        libraryRef="PostgreSqlJdbcLib"/>
    <properties 
        url="jdbc:postgresql://server:port/mydb?user=fred&amp;password=secret"/>
</dataSource>

Cela ne fonctionnerait pas et recevait l'erreur:

<properties 
    user="fred"
    password="secret"
    url="jdbc:postgresql://server:port/mydb"/>
0
Florin D

vérifiez également la variable PGHOST:

ECHO $ ​​PGHOST

pour voir s'il correspond au nom de la machine locale 

0
Lynx Kepler

Pour ceux qui rencontrent cette erreur dans DBeaver, la solution a été trouvée ici à la ligne:

@lcustodio sur la page SSL, définissez le mode SSL: obligatoire et laissez la fabrique SSL vide ou utilisez org.postgresql.ssl.NonValidatingFactory

Sous Réseau -> onglet SSL, j'ai coché la case Utiliser SLL et défini l'option Avance -> SSL Mode = require et cela fonctionne maintenant.

0
Guy Lowe