2013-02-13 14 views
5

Ich habe Postgres in meinem lokalen Rechner installiert.psql: FATAL: Rolle "postgres" existiert nicht (mit Option -h localhost)

Als ich

psql -U postgres -d buzzsumo 

ausführen fragt er richtig für mein Passwort an die Benutzer postgres.

Allerdings, wenn ich

psql -U postgres -d buzzsumo -h localhost 

laufen es gibt mir diese Fehlermeldung:

psql: FATAL: Rolle "Postgres" existiert nicht

Warum ist dies die Fall, wenn ich im ersten Beispiel eine Verbindung zu meinem lokalen Server herstelle, was der Übergabe von localhost entspricht?

Antwort

2

Sie sagen nicht, aber ich vermute, Sie laufen Postgres entweder auf MacOS oder Linux.

Die erste Form (ohne -h) wird über eine "Unix-Buchse" verbunden. Das zweite Formular mit "-h localhost" verbindet sich über TCP/IP mit localhost (IP-Adresse 127.0.0.1).

Postgres behandelt diese beiden Arten von Verbindungen unterschiedlich - oder zumindest kann es dies tun. Überprüfen Sie in der Datei "pgsql/data/pg_hba.conf", welche Authentifizierungsmechanismen für die beiden Verbindungstypen konfiguriert sind.

2

Ihr erstes Beispiel verbindet über Unix-Socket, das zweite über TCP/IP-Local-Loop (localhost).

Für das erste Beispiel benötigen Sie den Verbindungstyp local in pg_hba.conf, für die zweiten Zeilen beginnend mit host sind relevant. Sie haben wahrscheinlich unterschiedliche authentication methods für diese Verbindungsklassen definiert.

Verwandte Themen