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!

56voto

isapir Punkte 17220

Dies geschieht, wenn Sie initdb mit einem Benutzer ausführen, dessen ID nicht postgres ist, ohne den postgres-Benutzernamen mit --username=postgres oder -U postgres anzugeben.

Der Datenbank-Cluster wird dann mit dem Benutzerkonto des Systems erstellt, mit dem Sie initdb ausgeführt haben, und bekommt Superuser-Berechtigungen.

Um dies zu beheben, erstellen Sie einfach einen neuen Benutzer namens postgres mit der Option --superuser mit dem createuser-Dienstprogramm, das zu Postgres gehört. Das Dienstprogramm befindet sich im Verzeichnis bin von Postgres. z.B.

createuser --superuser postgres

Wenn Sie einen benutzerdefinierten Hostnamen oder Port haben, stellen Sie sicher, dass Sie die entsprechenden Optionen festlegen.

Vergessen Sie nicht, das andere Benutzerkonto zu löschen, das für Sie von initdb erstellt wurde.

47voto

Saket Sinha Punkte 511

Wenn Sie postgres von Brew installiert haben, führen Sie dies in Ihrem Terminal aus:

/usr/local/opt/postgres/bin/createuser -s postgres

24voto

ruzenhack Punkte 963

Zuerst müssen Sie einen Benutzer erstellen:

sudo -u postgres createuser --superuser $USER

Nachdem Sie eine Datenbank erstellt haben:

sudo -u postgres createdb $USER

Ändern Sie $USER in Ihren Systembenutzernamen.

Sie können die vollständige Lösung hier sehen.

21voto

Beau Barker Punkte 1832

Ich musste $PGUSER aufheben:

$ unset PGUSER
$ createuser -s postgres

17voto

SwiftPush Punkte 171

Wenn Sie Postgres von Brew installiert haben und einen Apple Silicon (M1) Mac verwenden, führen Sie dies in Ihrem Terminal aus:

/opt/homebrew/opt/postgresql/bin/createuser -s postgres

Wenn Sie einen Intel (x86) Mac verwenden, führen Sie dies in Ihrem Terminal aus:

/usr/local/opt/postgres/bin/createuser -s postgres

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