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!

4voto

gdmanandamohon Punkte 2211

Ich hatte heute ein ähnliches Problem, ich war mir tatsächlich nicht sicher, was der Benutzername war. Hier sind die 2 Dinge, wenn Sie im Unternehmen sind und keinen Systemadministratorzugriff haben, erstellt postgres Ihren Unternehmensbenutzernamen als Administratorbenutzernamen. Wenn Sie über Homebrew installieren, wird dies definitiv passieren. In diesem Fall starten Sie einfach Ihren psql-Dienst mit Brew und geben den Benutzernamen aus:

brew services start postgresql

dann

echo $USER

Sie sehen Ihren Benutzernamen des postgres-Benutzers.

3voto

zabop Punkte 5436

Auf dem Mac hat es funktioniert, das Folgende im Terminal auszuführen:

createuser -s postgres

.

2voto

FedericoCapaldo Punkte 1409

Kontext

Ich füge eine Antwort für einen Fall hinzu, den ich hier noch nicht gesehen habe, was ein Grenzfall ist, wenn Sie mehrere Benutzer auf demselben Gerät haben und der Benutzer, der versucht, postgres-Dienste zu verwenden, nicht der Benutzer ist, der postgres auf dem Gerät installiert hat.

Was ich versucht habe

Unter anderen ähnlichen Befehlen sind für mich all diese Befehle fehlgeschlagen:

createuser -s [Ihr Benutzername]
# createuser: Fehler: Verbindung zum Server über Socket "/tmp/.s.PGSQL.5432" fehlgeschlagen: FATAL: Rolle "[Ihr Benutzername]" existiert nicht

createuser -s postgres
# createuser: Fehler: Verbindung zum Server über Socket "/tmp/.s.PGSQL.5432" fehlgeschlagen: FATAL: Rolle "[Ihr Benutzername]" existiert nicht

sudo -u postgres createuser --superuser [Ihr Benutzername]
# sudo: Unbekannter Benutzer: postgres
# sudo: Fehler bei der Initialisierung des Überwachungsplugins sudoers_audit

psql -U postgres
# psql: Fehler: Verbindung zum Server über Socket "/tmp/.s.PGSQL.5432" fehlgeschlagen: FATAL: Rolle "postgres" existiert nicht

Grund

Der Grund dafür ist, dass weder die Rolle postgres noch [Ihr Benutzername] (auch bekannt als whoami in Ihrer Befehlszeile) in postgres vorhanden sind.

Lösung

In einem solchen Grenzfall musste ich mich zuerst mit dem Benutzer, der postgres installiert hat, anmelden:

sudo su - [Benutzername, der postgres installiert hat]

Und dann eine Rolle für meinen neuen Benutzer erstellen:

createuser -s [Ihr Benutzername]

2voto

palamunder Punkte 2233

Wenn Sie dieses Problem unmittelbar nach dem Ausführen eines Docker-Containers erleben, versuchen Sie, den Container zu zerstören und neu zu erstellen. Das hat bei mir funktioniert:

docker-compose down
docker-compose up --force-recreate

Dadurch wird die DB mit postgresuser als Standardbenutzer neu erstellt

2voto

stefanitsky Punkte 433

Mit einem neuen Mac (M1) und dem neuesten Postgres (14.0) über Homebrew installiert, konnte mir nichts aus diesem Thema helfen, aber ich habe einfach Postgres neu installiert und das hat geholfen:

brew services stop postgresql
rm -rf /opt/homebrew/var/postgres/*
brew reinstall postgresql
initdb --locale=C -E UTF-8 /opt/homebrew/var/postgres
brew services restart postgresql

Also, es ist ein Wunder oder so etwas...

Dann einfach:

psql -d 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