679 Stimmen

Psql: FATAL: Rolle "postgres" existiert nicht

Ich bin ein PostgreSQL-Neuling.

Ich habe die PostgreSQL-App für Mac installiert. Ich habe mit den psql-Befehlen herumgespielt und versehentlich die PostgreSQL-Datenbank gelöscht. Ich weiß nicht, was darin war.

Ich arbeite gerade an einem Tutorial: http://www.rosslaird.com/blog/building-a-project-with-mezzanine/

Und ich stecke bei sudo -u postgres psql postgres fest.

FEHLERMELDUNG: psql: FATAL: Rolle "postgres" existiert nicht

$ which psql

/Applications/Postgres.app/Contents/MacOS/bin/psql

Das ist die Ausgabe von psql -l

                                Liste der Datenbanken
    Name    |   Besitzer    | Kodierung | Kollation | Ctype |     Zugriffsrechte     
------------+--------------+-----------+-----------+-------+---------------------------
 user       | user       | UTF8     | en_US   | en_US | 
 template0  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
 template1  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
(3 Zeilen)

Was sind also die Schritte, die ich unternehmen sollte? Alles im Zusammenhang mit psql löschen und alles neu installieren?

Danke für eure Hilfe!

2voto

Amar Bisht Punkte 127

Wenn Sie ein MAC (M1) Benutzer sind und Postgres mithilfe von HomeBrew installiert haben, befolgen Sie diese Schritte:

  1. Überprüfen Sie den Standort Ihres Postgres mit which psql
  2. Führen Sie dann den Befehl /opt/homebrew/bin/createuser -s postgres aus, wenn der Output für den ersten Befehl /opt/homebrew/bin/psql ist

Die Idee besteht darin, einen Benutzer namens 'postgres' unter Verwendung des Postgres-Installationsstandorts zu erstellen. Möglicherweise müssen Sie den Befehl je nach Standort Ihres Postgres ändern.

1voto

Jchy Punkte 56

Gehen Sie zum Terminal. Stellen Sie sicher, dass Sie sich nicht in der PostgreSQL-Shell befinden und Ihr PostgreSQL im Terminal läuft. Führen Sie nun den folgenden Befehl in Ihrem Terminal aus :

createuser -s postgres

1voto

Nitesh Rawat Punkte 71

Für m1 Chips und die Homebrew-Version 3.4.9 wurde createuser in den Cellar des entsprechenden Pakets verschoben. Das hat bei mir funktioniert /opt/homebrew/Cellar/postgresql@12/12.10_1/bin/createuser -s postgres

1voto

Gaurav Neema Punkte 146

Auf dem Ubuntu-System habe ich PostgreSQL deinstalliert und neu installiert. Alle Datenbanken wurden wiederhergestellt. Das hat das Problem für mich gelöst.

Tipp - Erstellen Sie zur Sicherheit ein Backup der Datenbanken.

0voto

Chris Travers Punkte 23990

Ich denke nicht, dass sudo hier benötigt wird, weil psql -l eine Liste der Datenbanken zurückgibt. Dies sagt mir, dass initdb unter dem aktuellen Benutzer des Benutzers und nicht unter dem Benutzer postgres ausgeführt wurde.

Sie können einfach:

psql

Und mit dem Tutorial fortfahren.

Ich würde A.H.'s allgemeine Punkte empfehlen, den postgres-Benutzer und die Datenbank zu erstellen, da viele Anwendungen erwarten könnten, dass diese existieren.

Eine kurze Erklärung:

PostgreSQL wird nicht mit administrativem Zugriff auf das Betriebssystem ausgeführt. Stattdessen läuft es mit einem gewöhnlichen Benutzer, und um die Peer-Authentifizierung zu unterstützen (das Betriebssystem fragen, wer versucht, eine Verbindung herzustellen), erstellt es einen Benutzer und eine Datenbank mit dem Benutzer, der den Initialisierungsprozess ausführt. In diesem Fall war es Ihr normaler Benutzer.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X