Beim Versuch, eine Verbindung über DBI herzustellen, wird folgende Fehlermeldung angezeigt
DBI-Verbindung ('Datenbank = ChaosLRdb; Host = 192.168.0.1; Port = 5433', 'Postgres', ...) fehlgeschlagen: FATAL: Kein pg_hba.conf-Eintrag für Host "192.168.0.1", Benutzer "postgres", Datenbank "ChaosLRdb", SSL aus
Hier ist meine pg_hba.conf-Datei:
# "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
Mein Perl-Code ist
#!/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");
Darf ich wissen, was ich hier vermisse?
perl
postgresql
database-permissions
gunr2171
quelle
quelle
Wenn Sie diese Zeile ändern können:
host all all 192.168.0.1/32 md5
Mit diesem:
host all all all md5
Sie können sehen, ob dies das Problem löst.
Eine weitere Überlegung ist, dass Ihr Postgresql-Port (5432) sehr offen für Passwortangriffe mit Hackern ist (möglicherweise können sie das Passwort brutal erzwingen). Sie können Ihren Postgresql-Port 5432 in '33333' oder einen anderen Wert ändern, damit diese Konfiguration nicht bekannt ist.
quelle
Ihre Postgres-Serverkonfiguration scheint korrekt zu sein
Dies sollte den Zugriff des Clients auf den Postgres-Server gewähren. Das lässt mich glauben, dass der Benutzername / das Passwort fehlschlägt.host all all 127.0.0.1/32 md5 host all all 192.168.0.1/32 trust
Testen Sie dies, indem Sie einen bestimmten Benutzer für diese Datenbank erstellen
Passen Sie dann Ihr Perl-Skript an, um den neu erstellten Benutzer zu verwenden
my $dbh = DBI->connect("DBI:PgPP:database=chaosLRdb;host=192.168.0.1;port=5433", "chaosuser", "chaos123");
quelle
Um dieses Problem zu beheben, können Sie dies versuchen.
Zuerst haben Sie Ihre pg_hba.conf herausgefunden durch:
cd /etc/postgresql/9.5/main aus Ihrem Stammverzeichnis
und Datei mit öffnen
sudo nano pg_hba.conf
Fügen Sie dann diese Zeile hinzu:
local all all md5
zu Ihrer pg_hba.conf und starten Sie dann mit dem folgenden Befehl neu:
sudo service postgresql restart
quelle
Um dieses Problem zu beheben, können Sie dies versuchen.
Zuerst müssen Sie Ihre pg_hba.conf herausfinden und schreiben:
local all all md5
nach diesem Neustart pg Server:
oder
sudo /etc/init.d/postgresql restart
quelle
Für diejenigen, die diesen Fehler in DBeaver erhalten, wurde die Lösung hier in Zeile gefunden:
@lcustodio Legen Sie auf der SSL-Seite den SSL-Modus fest: require und lassen Sie entweder die SSL-Factory leer oder verwenden Sie die org.postgresql.ssl.NonValidatingFactory
Unter der Registerkarte Netzwerk -> SSL habe ich das Kontrollkästchen SLL verwenden aktiviert und Advance -> SSL Mode = require festgelegt. Jetzt funktioniert es.
quelle
Wenn Sie ein ähnliches Problem haben und versuchen, eine Verbindung zu einer lokalen Datenbank herzustellen, und versuchen Sie
con = psycopg2.connect(database="my_db", user="my_name", password="admin")
, den zusätzlichen Parameter zu übergeben, hat mir Folgendes Folgendes erspart:con = psycopg2.connect(database="my_db", user="my_name", password="admin", host="localhost")
quelle
Wenn Sie einen Fehler wie den folgenden erhalten:
OperationalError: FATAL: no pg_hba.conf entry for host "your ipv6", user "username", database "postgres", SSL off
Fügen Sie dann einen Eintrag wie den folgenden mit Ihrer Mac-Adresse hinzu.
host all all [your ipv6]/128 md5
quelle
Überprüfen Sie auch die Variable PGHOST:
um zu sehen, ob es mit dem lokalen Computernamen übereinstimmt
quelle
Übrigens, in meinem Fall musste ich den Benutzer / pwd in der URL angeben, nicht als unabhängige Eigenschaften, sie wurden ignoriert und mein Betriebssystembenutzer wurde zum Herstellen einer Verbindung verwendet
Meine Konfiguration befindet sich in einer WebSphere 8.5.5-Datei server.xml
<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&password=secret"/> </dataSource>
Dies würde nicht funktionieren und bekam den Fehler:
<properties user="fred" password="secret" url="jdbc:postgresql://server:port/mydb"/>
quelle
In meinem Fall habe ich gerade spring.postgresql.jdbc.url geändert , das IPV4 enthielt. Ich habe es in 127.0.0.1 geändert
quelle
Überprüfen Sie den Hostnamen / die Adresse der Postgres-Verbindung in pgadmin und verwenden Sie diese in Ihrem Verbindungsparameter.
DBI connect ('database = messoLRdb; host = "behalte was erwähnt wird" ; port = 5433', 'postgres', ...)
quelle