Ich habe PostgreSQL und pgAdminIII auf meiner Ubuntu Karmic-Box installiert.
Ich kann pgAdminIII erfolgreich verwenden (dh verbinden / anmelden). Wenn ich jedoch versuche, mich mit demselben Benutzernamen / pwd in der Befehlszeile (mit psql) beim Server anzumelden, wird folgende Fehlermeldung angezeigt:
psql: FATAL: Ident authentication failed for user "postgres"
Weiß jemand jetzt, wie man dieses Problem löst?
postgresql
morpheous
quelle
quelle
Antworten:
Haben Sie die richtigen Einstellungen in pg_hba.conf vorgenommen?
Siehe https://help.ubuntu.com/stable/serverguide/postgresql.html , wie es geht.
quelle
Die folgenden Schritte funktionieren für eine Neuinstallation von Postgres 9.1 unter Ubuntu 12.04. (Arbeitete auch für Postgres 9.3.9 unter Ubuntu 14.04.)
Standardmäßig erstellt postgres einen Benutzer mit dem Namen "postgres". Wir melden uns als sie an und geben ihr ein Passwort.
Abmelden
psql
durch Eingabe von\q
oderctrl+d
. Dann verbinden wir uns als "Postgres". Der-h localhost
Teil ist wichtig : Er teilt dempsql
Client mit, dass eine Verbindung über eine TCP-Verbindung (die für die Verwendung der Kennwortauthentifizierung konfiguriert ist) und nicht über eine PEER-Verbindung (die sich nicht um das Kennwort kümmert) hergestellt werden soll.quelle
PGHOST=localhost
Sie die-h
Option nicht jedes Mal angeben . Dies funktioniert auch mit anderenpg_*
Befehlen wiepg_dump
.Bearbeiten Sie die Datei
/etc/postgresql/8.4/main/pg_hba.conf
und ersetzen Sie sieident
oderpeer
entwedermd5
odertrust
, je nachdem, ob Sie auf Ihrem eigenen Computer nach einem Kennwort fragen möchten oder nicht. Laden Sie dann die Konfigurationsdatei neu mit:quelle
restart
für mich funktioniert hat, nichtreload
--- nach Änderungen an/etc/postgresql/9.5/main/pg_hba.conf
(Wechselpeer
zutrust
).Dieser Fehler wird angezeigt, weil die Clientauthentifizierung fehlschlägt. Basierend auf der Fehlermeldung haben Sie wahrscheinlich die Standardkonfiguration von postgres, mit der die Clientauthentifizierungsmethode für alle PostgreSQL-Verbindungen auf "IDENT" gesetzt wird.
Sie sollten auf jeden Fall Abschnitt 19.1 Clientauthentifizierung im PostgreSQL-Handbuch lesen , um die verfügbaren Authentifizierungseinstellungen (für jeden Datensatz in pg_hba.conf ) besser zu verstehen. Hier finden Sie jedoch den entsprechenden Ausschnitt, der bei dem aufgetretenen Problem hilft (aus dem Handbuch der Version 9.5) ):
Um das aufgetretene Problem zu lösen, können Sie eine der folgenden Aktionen ausführen:
Ändern Sie die Authentifizierungsmethode (n) definiert in der
pg_hba.conf
Datei zutrust
,md5
oderpassword
(je nach Sicherheit und Einfachheit Bedürfnisse) für die lokale Verbindung Datensätze , die Sie dort definiert haben.Aktualisieren Sie
pg_ident.conf
, um Ihre Betriebssystembenutzer PostgreSQL-Benutzern zuzuordnen, und gewähren Sie ihnen je nach Bedarf die entsprechenden Zugriffsrechte.Lassen Sie die IDENT-Einstellungen in Ruhe und erstellen Sie Benutzer in Ihrer Datenbank für jeden Betriebssystembenutzer, auf den Sie Zugriff gewähren möchten. Wenn ein Benutzer bereits vom Betriebssystem authentifiziert und angemeldet ist, erfordert PostgreSQL keine weitere Authentifizierung und gewährt diesem Benutzer Zugriff basierend auf den ihm in der Datenbank zugewiesenen Berechtigungen (Rollen). Dies ist die Standardkonfiguration.
Hinweis: Der Speicherort von
pg_hba.conf
undpg_ident.conf
ist vom Betriebssystem abhängig.quelle
/etc/postgresql/9.6/main/pg_hba.conf
.Das
-h localhost
Bit einfach hinzuzufügen war alles, was ich brauchte, um zu arbeitenquelle
this_computer = 'http://localhost'
Sie können die Umgebungsvariable festlegen
PGHOST=localhost
:quelle
Für den Fall, dass keines der oben genannten Verfahren für Sie funktioniert:
Ich habe einige Postgres-Installationen durchgeführt, wurde aber heute auf einem RedHat 6.5-System (Installation von Postgres 9.3) durcheinander gebracht. Meine typische hba.conf-Konfiguration, die Aron oben zeigt, hat nicht funktioniert. Es stellte sich heraus, dass mein System IPV6 verwendete und die IPV4-Konfiguration ignorierte. Hinzufügen der Zeile:
erlaubte mir, mich erfolgreich anzumelden.
quelle
Von all den obigen Antworten hat nichts für mich funktioniert. Ich musste das Benutzerkennwort in der Datenbank manuell ändern und es funktionierte plötzlich.
Ich habe die folgenden Einstellungen verwendet:
pg_hba.conf
Die Verbindung ist für den folgenden Befehl endlich erfolgreich:
quelle
Ich stellte fest, dass ich einen Identitätsserver installieren musste, der Port 113 überwacht.
Und dann hat ident funktioniert.
quelle
Hmmm ...
Wenn Sie in pgAdminIII eine Verbindung mit dem Benutzernamen und dem Kennwort herstellen können, aber keine Verbindung herstellen können, stellen
psql
diese beiden Programme wahrscheinlich eine unterschiedliche Verbindung zur Datenbank her.[Wenn Sie eine Verbindung zu verschiedenen Datenbanken herstellen, versuchen Sie zunächst, eine Verbindung zu derselben Datenbank herzustellen. Siehe unten.]
Von PostgreSQL: Dokumentation: 9.3: psql :
Wenn Sie so etwas nicht ausführen
psql ... -h host_name ...
und Ubuntu ausführen,psql
sollte die Verbindung über einen Unix-Domain-Socket hergestellt werden, sodass PostgreSQL wahrscheinlich nicht so konfiguriert ist, dass eine der Kennwortauthentifizierungsmethoden für den Postgres- Benutzer zulässig ist.Sie können dies testen, indem Sie Folgendes ausführen:
sudo -u postgres psql
Wenn dies funktioniert, ist Ihr Server wahrscheinlich so konfiguriert, dass der Postgres- Benutzer die Peer- Authentifizierung für lokale Verbindungen verwendet , dh das Betriebssystem fragt nach Ihrem Benutzernamen, um zu bestätigen, dass Sie Postgres sind .
Es ist also wahrscheinlich Ihre pg_hba.conf- Datei
Der vollständige Pfad der Datei wird etwas sein , wie /etc/postgresql/9.3/main/pg_hba.conf . Sie können es anzeigen, z
sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more
.Wenn Sie den Hostnamen in Ihrem
psql
Befehl weglassen , sollten Sie eine Verbindung herstellen können, wenn Sie Ihrer Datei pg_hba.conf den folgenden Eintrag hinzufügen :[Kommentierte Zeilen in der Datei pg_hba.conf beginnen mit
#
.]Wenn Sie sind die Host - Namen in Ihrem einschließlich
psql
Befehl, fügen Sie diesen Eintrag statt:Sie müssen den Eintrag eingeben, bevor andere Einträge für Ihre Verbindung über übereinstimmen
psql
. Wenn Sie sich nicht sicher sind, wo Sie es platzieren sollen, setzen Sie es einfach vor die erste nicht kommentierte Zeile.Mehr über pg_hba.conf
Aus PostgreSQL: Dokumentation: 9.3: Die Datei pg_hba.conf [meine fettgedruckte Hervorhebung]:
Beachten Sie, dass Datensätze bei der Authentifizierungsmethode nicht übereinstimmen. Wenn Ihre Datei pg_hba.conf den folgenden Eintrag enthält:
Dann können Sie keine Verbindung herstellen über:
psql -u postgres
Es sei denn, einer dieser Einträge befindet sich in Ihrer Datei pg_hba.conf über dem vorherigen Eintrag:
quelle
In meinem Fall Lösung hier: (für Betroffene) Loggen Sie sich bei postgres ein:
Grüße
quelle
Das Problem ist immer noch Ihre Datei pg_hba.conf. Diese Zeile: Sie finden diese Datei in / etc / postgres / varion / main
Dies sind kurze Beschreibungen beider Optionen gemäß den offiziellen PostgreSQL-Dokumenten zu Authentifizierungsmethoden.
Peer-Authentifizierung
Bei der Peer-Authentifizierungsmethode wird der Benutzername des Betriebssystems des Clients vom Kernel abgerufen und als zulässiger Datenbankbenutzername verwendet (mit optionaler Benutzernamenzuordnung). Diese Methode wird nur bei lokalen Verbindungen unterstützt.
Passwortauthentifizierung
Die kennwortbasierten Authentifizierungsmethoden sind md5 und Kennwort. Diese Methoden funktionieren ähnlich, mit Ausnahme der Art und Weise, wie das Kennwort über die Verbindung gesendet wird, nämlich MD5-Hash bzw. Klartext.
Wenn Sie sich überhaupt Gedanken über "Sniffing" -Angriffe mit Passwörtern machen, wird md5 bevorzugt. Ein einfaches Passwort sollte nach Möglichkeit immer vermieden werden. Md5 kann jedoch nicht mit der Funktion db_user_namespace verwendet werden. Wenn die Verbindung durch SSL-Verschlüsselung geschützt ist, kann das Kennwort sicher verwendet werden (obwohl die SSL-Zertifikatauthentifizierung möglicherweise die bessere Wahl ist, wenn SSL verwendet wird).
Vergessen Sie nach dem Ändern dieser Datei nicht, Ihren PostgreSQL-Server neu zu starten. Wenn Sie unter Linux sind, wäre das
sudo service postgresql restart.
quelle
Für fedora26 und postgres9.6
Melden Sie sich zuerst als Benutzer root an und geben Sie dann mit den folgenden Befehlen in psql ein
dann
in
psql
find location of hba_file ==> bedeutetpg_hba.conf
in Datei
pg_hba.conf
ändern Benutzerzugriff daraufquelle
Meine Lösung für PostgreSQL 9.3 unter Mac OSX in der Bash-Shell bestand darin
sudo
, in den Datenordner zu wechseln und dann die erforderlichen Zeilen an diepg_hba.conf
Datei anzuhängen , damit alle Benutzer vertrauenswürdig sind und sich anmelden können. Dies habe ich getan ::quelle
Wenn Sie dies alles getan haben und es immer noch nicht funktioniert, überprüfen Sie den Ablauf für diesen Benutzer:
Die Postgres-Kennwortauthentifizierung schlägt fehl
quelle
Ich habe mehr Zeit damit verbracht, diesen Fehler zu lösen, als ich zugeben möchte.
Die Reihenfolge der Authentifizierungskonfiguration in pg_hba.conf ist in Ihrem Fall meiner Meinung nach relevant. Die Standardkonfigurationsdatei enthält mehrere Zeilen in einer Vanilla-Installation. Diese Standardeinstellungen können mit den Bedingungen Ihrer Authentifizierungsversuche übereinstimmen, die zu einer fehlgeschlagenen Authentifizierung führen. Es schlägt unabhängig von der zusätzlichen Konfiguration fehl, die am Ende der .conf-Datei hinzugefügt wurde.
Um zu überprüfen, welche Konfigurationszeile verwendet wird, überprüfen Sie die Standardprotokolldatei auf Nachrichten. Sie könnten so etwas sehen
Es stellt sich heraus, dass diese Standardzeile die Ablehnung verursacht.
versuche es auskommentieren.
quelle
Ein Hack um dieses herum ist das Bearbeiten von pg_hba.conf
Vorübergehend
An diesem Punkt sind Sie fertig. Zur Sicherheit gehen Sie dann und
Gehen Sie dann zurück und setzen Sie pg_hba.conf zurück auf
quelle
Ich hatte ein ähnliches Problem und habe es in pg_hba.conf behoben, als ich alle Ident- Methoden auch für die IP6-Adresse entfernt habe (obwohl ich nur IP4 auf dem Computer habe).
quelle
Ich hatte das gleiche Problem, nachdem ich Folgendes befolgt hatte: PostgreSQL-Setup für die Rails-Entwicklung in Ubuntu 12.04
Ich habe die anderen Antworten ausprobiert, aber alles, was ich tun musste, war: "config / database.yml"
quelle
Wenn Sie es unter CentOS verwenden, müssen Sie möglicherweise Postgres neu laden, nachdem Sie die oben genannten Lösungen erstellt haben:
quelle
postgresql
systemctl status | grep postgres
Ich musste pdAdmin neu installieren, um dieses Problem zu beheben
quelle
Wenn Sie unter Windows pb_gba.conf nicht bearbeiten möchten, dh die Methode MD5 überlassen (Standard), erstellen Sie einen neuen Benutzer, indem Sie diese Abfrage im Abfragetool in PGadmin ausführen
dann in cmd
Dabei ist Datenbankname Ihre Datenbank in postgresql
quelle
Das hat bei mir funktioniert: http://tecadmin.net/fatal-ident-authentication-failed-for-user-postgres/#
quelle