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!

8voto

kangkyu Punkte 4174

Wir haben eine Datenbank namens postgres nach brew install postgresql und brew services start postgresql. So können wir standardmäßig psql wie folgt öffnen.

psql postgres

Und dann können wir in dieser psql-Konsole Benutzer mit beliebigem Namen hinzufügen.

CREATE USER postgres

Und wenn wir einen Superbenutzer möchten, können wir am Ende SUPERUSER hinzufügen.

5voto

Für m1 Chips, wenn Sie das postgresql-Paket nicht über Homebrew installiert haben, installieren Sie es im Terminal mit:

brew install postgre

erstellen Sie dann einen Benutzernamen manuell durch:

/opt/homebrew/bin/createuser -s  

Ihr Fehler ist wahrscheinlich behoben; aber wenn Sie den Fehler erhalten

FATAL: Datenbank "Datenbankname" existiert nicht

müssen Sie Ihre Datenbank manuell erstellen durch:

/opt/homebrew/bin/createdb -U

4voto

Daniel Vérité Punkte 52959

Das Löschen der postgres-Datenbank ist nicht wirklich wichtig. Diese Datenbank ist anfangs leer und soll lediglich dem Benutzer postgres als eine Art "Home" dienen, sollte er es benötigen.

Trotzdem können Sie sie mit dem SQL-Befehl CREATE DATABASE postgres; neu erstellen.

Beachten Sie, dass das im Frage genannte Tutorial nicht für postgres.app gedacht ist. Im Gegensatz zu PostgreSQL für Unix im Allgemeinen versucht postgres.app wie eine normale Anwendung auszusehen, anstatt ein Dienst zu sein, der von einem dedizierten Benutzer postgres mit unterschiedlichen Rechten als Ihrem normalen Benutzer ausgeführt wird. postgres.app wird von Ihrem eigenen Konto ausgeführt und verwaltet.

Also anstelle dieses Befehls: sudo -u postgres psql -U postgres, wäre es eher im Geiste von postgres.app, einfach nur psql zu verwenden, das automatisch eine Verbindung zu einer Datenbank herstellt, die Ihrem Benutzernamen entspricht, und mit einem DB-Konto mit demselben Namen, das zufällig Superuser ist und daher in Bezug auf Berechtigungen alles kann.

4voto

softwareplay Punkte 1321

Zum guten Aussehen, ich habe Ubuntu und viele Pakete installiert und es ist damit in Konflikt geraten.

Für mich war die richtige Antwort:

sudo -i -u postgres-xc
psql

4voto

Bax Punkte 4042

Dies ist das Einzige, was es für mich behoben hat :

createuser -s -U $USER

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