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!

631voto

A.H. Punkte 60629

HINWEIS: Wenn Sie postgres mit Homebrew installiert haben, sehen Sie den Kommentar von @user3402754 unten.

Beachten Sie, dass die Fehlermeldung NICHT von einer fehlenden Datenbank spricht, sondern von einer fehlenden Rolle. Später im Anmeldeprozess könnte es auch über die fehlende Datenbank stolpern.

Aber der erste Schritt besteht darin, die fehlende Rolle zu überprüfen: Was ist die Ausgabe innerhalb von psql des Befehls \du ? Auf meinem Ubuntu-System sieht die relevante Zeile folgendermaßen aus:

                              Liste der Rollen
 Rollenname |            Attribute             | Mitglied von 
-----------+-----------------------------------+-----------
 postgres  | Superuser, Rolle erstellen, DB erstellen | {}        

Wenn es nicht mindestens eine Rolle mit superuser gibt, haben Sie ein Problem :-)

Wenn es eine gibt, können Sie diese zum Einloggen verwenden. Und wenn Sie sich die Ausgabe Ihres \l Befehls ansehen: Die Berechtigungen für user auf den Datenbanken template0 und template1 sind die gleichen wie auf meinem Ubuntu-System für den Superuser postgres. Ich denke also, dass Ihr Setup einfach user als Superuser verwendet. Sie könnten also diesen Befehl versuchen, um sich einzuloggen:

sudo -u user psql user

Wenn user wirklich der DB-Superuser ist, können Sie einen anderen DB-Superuser erstellen und eine private, leere Datenbank für ihn erstellen:

CREATE USER postgres SUPERUSER;
CREATE DATABASE postgres WITH OWNER postgres;

Aber da Ihr postgres.app-Setup das anscheinend nicht tut, sollten Sie es auch nicht machen. Passen Sie einfach das Tutorial an.

331voto

Nitin Punkte 6339

Für MAC:

  1. Installieren Sie Homebrew
  2. brew install postgres
  3. initdb /usr/local/var/postgres
  4. /usr/local/Cellar/postgresql//bin/createuser -s postgres oder /usr/local/opt/postgres/bin/createuser -s postgres, das einfach die neueste Version verwendet.
  5. Starten Sie den Postgres-Server manuell: pg_ctl -D /usr/local/var/postgres start

Um den Server beim Start zu starten

  • mkdir -p ~/Library/LaunchAgents
  • ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
  • launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Jetzt ist es eingerichtet, melden Sie sich mit psql -U postgres -h localhost an oder verwenden Sie PgAdmin für die GUI.

Standardmäßig hat der Benutzer postgres kein Anmeldepasswort.

Überprüfen Sie diese Website für weitere Artikel wie diesen: https://medium.com/@Nithanaroy/installing-postgres-on-mac-18f017c5d3f7

289voto

jwd630 Punkte 4468

Der Schlüssel lautet "Ich habe die postgres.app für Mac installiert." Diese Anwendung richtet die lokale PostgreSQL-Installation mit einem Datenbanksuperuser ein, dessen Rollenname demselben wie Ihr Anmelde-(kurzer) Name ist.

Wenn Postgres.app zum ersten Mal gestartet wird, erstellt es die $USER-Datenbank, die die Standarddatenbank für psql ist, wenn keine angegeben wird. Der Standardbenutzer ist $USER, ohne Passwort.

Einige Skripte (z. B. ein mit pgdump auf einem Linux-System erstelltes Datenbanksicherung) und Anleitungen gehen davon aus, dass der Superuser den traditionellen Rollennamen postgres hat.

Sie können Ihre lokale Installation etwas traditioneller aussehen lassen und diese Probleme vermeiden, indem Sie einmalig Folgendes ausführen:

/Applications/Postgres.app/Contents/Versions/9.*/bin/createuser -s postgres

das wird die Fehlermeldung FATAL: role "postgres" does not exist verschwinden lassen.

91voto

CesareoAguirre Punkte 1357
createuser postgres --interaktiv

oder mache einen Superuser postgresl einfach mit

createuser postgres -s

89voto

Amit Meena Punkte 1400

Und wenn Sie hier im Jahr 2023 sind und sich fragen, was mit dem neuesten Postgres auf dem neuesten macOS (macOS Monterey) funktioniert

folgen Sie diesem:

brew install postgresql
createuser -s postgres
brew services restart postgresql

Hinweis: Wenn Sie eine dockerisierte Instanz verwenden, stellen Sie sicher, dass Sie zuerst die Variablen setzen, um eine Verbindung zu dieser Instanz herzustellen: export PGUSER="youruser" export PGHOST="127.0.0.1" export PGPASSWORD="yourpassword.

Danke an @NicolasZ für den Kommentar zur dockerisierten Instanz.

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