Beheben Sie den PostgreSQL-Fehler "psql: FATAL: Datenbank "root" existiert nicht".

Bei diesem Text handelt es sich um eine maschinell erstellte Übersetzung. Eine überarbeitete Version ist in Planung.

Einführung

Erfahren Sie, wie Sie den häufigen PostgreSQL-Fehler psql beheben können: FATAL: Die Datenbank "root" existiert nicht." Neue PostgreSQL-Benutzer stoßen häufig auf diesen Fehler, wenn sie sich zum ersten Mal bei PostgreSQL anmelden.

Anforderungen

  • Ein Cloud Server unter Linux (jede Distribution)
  • PostgreSQL installiert und ausgeführt

Weitere Informationen zum Einstieg in PostgreSQL finden Sie im Artikel Installieren und verwenden Sie PostgreSQL.

Wechseln Sie zum PostgreSQL-Benutzer

Wenn Sie MySQL/MariaDB in der Vergangenheit verwendet haben, sind Sie es gewohnt, sich mit dem Befehl mysql -u root -p von jedem Konto aus in die Datenbank einzuloggen. PostgreSQL verwendet jedoch ein anderes Sicherheitsmodell.

PostgreSQL hat einen eigenen Benutzer auf dem System, der bei der Installation von PostgreSQL angelegt wird. Der postgres-Benutzer kann sich ohne Passwort in PostgreSQL anmelden. Kein anderer Benutzer kann sich bei PostgreSQL anmelden.

Das bedeutet, dass Sie vor der Verwendung von PostgreSQL mit dem Befehl zu diesem Benutzerkonto wechseln müssen:

su - postgres

Sie können sich dann mit dem Befehl in den PosgreSQL-Client einloggen:

psql

Sie können nicht wie jeder andere Benutzer von der Befehlszeile aus auf die Datenbank zugreifen.

Was der Fehler bedeutet

Wenn Sie sich mit einem anderen Benutzer als dem Postgres-Benutzer bei PostgreSQL anmelden, wird dieser versuchen, Sie in eine Datenbank mit dem gleichen Namen wie Ihr Benutzerkonto einzuloggen. Das bedeutet, wenn Sie versuchen, den Befehl psql als root zu verwenden, wird er versuchen, Sie in die Datenbank-Root einzuloggen. Wenn Sie versuchen, sich anzumelden, während Sie als jdoe angemeldet sind, wird nach der Datenbank jdoe gesucht, usw.

PostgreSQL konnte diese Datenbank nicht finden und gibt die Fehlermeldung "Datenbank[Ihr Benutzername] existiert nicht" aus.