130 votes

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

J'obtiens l'erreur suivante lorsque j'essaie de me connecter en utilisant DBI

DBI connect('database=chaosLRdb;host=192.168.0.1;port=5433','postgres',...) 
failed: FATAL:  no pg\_hba.conf entry for host "192.168.0.1", user "postgres", database "chaosLRdb", SSL off

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 que j'ai manqué ici ?

73voto

Hasan Tuna Oruç Points 389

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 il faut aussi tenir compte du fait que le port postgresql (5432) est très ouvert aux attaques par mot de passe des pirates (ils peuvent peut-être forcer le mot de passe). Vous pouvez changer votre port postgresql 5432 en '33333' ou une autre valeur, afin qu'ils ne puissent pas connaître cette configuration.

42voto

Gray Points 58585

Dans votre fichier pg_hba.conf, je vois quelques lignes incorrectes et confuses :

# 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 md5'd le mot de passe, cela pourrait fonctionner si vous coupez les lignes. Pour obtenir le md5, vous pouvez utiliser perl ou le shell script suivant :

 echo -n 'chaos123' | md5sum
 > d6766c33ba6cf0bb249b37151b068f10  -

Ainsi, votre ligne de connexion ressemblerait à 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 le documentation du fichier pg_hba.conf de postgres 8.X .

13voto

Christian Points 11

Si vous obtenez cette erreur en utilisant le module node et pg, vous pouvez configurer ssl pour ne pas rejeter les accès non autorisés comme ceci

const pool = new Pool({
    connectionString: "your connection string",
    ssl: {
        rejectUnauthorized: false
    }
})

9voto

adam Points 1848

La configuration de votre 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 m'amène à penser que le nom d'utilisateur / mot de passe est ce qui échoue.

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 perl script pour utiliser l'utilisateur nouvellement créé

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

8voto

Sumant Singh Points 239

Ajoutez la ligne suivante dans pg_hba.conf

hostnossl all all 0.0.0.0/0 trust

Et puis redémarrez le service.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X