Standarddatenbank mit dem Namen postgres auf dem Postgresql-Server


74

Anscheinend gibt es eine Datenbank "postgres", die standardmäßig bei jeder Installation des postgresql-Servers erstellt wird. Kann mir jemand sagen oder mich auf die Dokumentation verweisen, wofür es verwendet wird?

Antworten:


43

Es scheint, dass es nicht wirklich einen genau definierten Zweck hat. Laut den Dokumenten:

Das Erstellen eines Datenbankclusters besteht aus dem Erstellen der Verzeichnisse, in denen die Datenbankdaten gespeichert werden, dem Generieren der gemeinsam genutzten Katalogtabellen (Tabellen, die zum gesamten Cluster und nicht zu einer bestimmten Datenbank gehören) und dem Erstellen der Datenbanken "template1" und "postgres".

[...]

Die Postgres-Datenbank ist eine Standarddatenbank, die von Benutzern, Dienstprogrammen und Anwendungen von Drittanbietern verwendet werden kann.

(Quelle: http://www.postgresql.org/docs/current/app-initdb.html )


94

Wenn eine Clientanwendung eine Verbindung zu einem Postgres-Server herstellt, muss sie angeben, zu welcher Datenbank sie eine Verbindung herstellen möchte. Wenn Sie den Namen einer Datenbank nicht kennen (innerhalb des Clusters, der von dem Postmaster bedient wird, mit dem Sie eine Verbindung herstellen), können Sie mit dem folgenden Befehl eine Liste der Datenbanknamen finden:

psql -l

Wenn Sie diesen Befehl ausführen, stellt psql eine Verbindung zum Server her und fragt pg_database nach einer Liste von Datenbanknamen ab. Da psql jedoch eine Postgres-Clientanwendung ist, kann keine Verbindung zum Server hergestellt werden, ohne den Namen mindestens einer Datenbank zu kennen: Catch-22. Daher ist psql fest codiert, um beim Ausführen eine Verbindung zu einer Datenbank mit dem Namen "postgres" herzustellen. psql -lIn diesem Fall können Sie jedoch eine Vorlagendatenbank angeben:

psql -l -d template1

34

Es gibt auch die Datenbank template0, Ihr Sicherheitsnetz, wenn Sie alle anderen vermasseln.

  1. postgres ist Ihre Standarddatenbank, mit der Sie eine Verbindung herstellen können.
  2. template1 ist Ihre Standardeinstellung zum Erstellen neuer Datenbanken. Diese werden genau wie template1 erstellt
  3. template0 ist nützlich, wenn template1 beschädigt ist (falsche Einstellungen usw.) und Sie nicht viel Zeit damit verbringen möchten, dies zu beheben. Löschen Sie einfach template1 und erstellen Sie eine neue template1 mit der Datenbank template0.

10
Ist es sicher, die postgresDatenbank zu löschen, wenn Sie sie nicht verwenden?
CMCDragonkai

@CMCDragonkai, Wenn ich mich nicht irre, benötigen Sie immer noch die postgresDatenbank oder ähnliches. Wenn Sie beispielsweise einen Speicherauszug Ihrer Datenbank mit den Optionen zum Löschen und Neuerstellen Ihrer Anwendungsdatenbank erstellen, funktioniert dies nicht, wenn Sie versuchen, dieselbe Datenbank wiederherzustellen, da Sie mit der Datenbank verbunden sind, die Sie löschen und erstellen möchten .
KaizenCoder

Sie müssen also mit einer Datenbank verbunden sein, um eine Datenbank zu löschen. Es reicht nicht aus, mit einem Server verbunden zu sein, auf dem Datenbanken ausgeführt werden.
Muhammad Umer

6

In dem obigen Kommentar wurde gefragt: "Ist es sicher, die Postgres-Datenbank zu löschen, wenn Sie sie nicht verwenden?" - CMCDragonkai 22. Oktober 16 um 10:37 Uhr

Aus der PostgreSQL-Dokumentation

Nach der Initialisierung enthält ein Datenbankcluster eine Datenbank mit dem Namen postgres, die als Standarddatenbank für Dienstprogramme, Benutzer und Anwendungen von Drittanbietern gedacht ist. Für den Datenbankserver selbst muss die Postgres-Datenbank nicht vorhanden sein, aber viele externe Dienstprogramme gehen davon aus, dass sie vorhanden ist.

[Hinweis: Ein Datenbankcluster ist eine Sammlung von Datenbanken, die von einer einzelnen Instanz eines laufenden Datenbankservers verwaltet werden.]


3

Wenn Sie beim Erstellen neuer Datenbanken mehrere Datenbankverbindungen verwenden, können nicht alle Verbindungen zu template1oder hergestellt werden template0.

Postgresql gibt einen Fehler aus, wenn andere Verbindungen auf die Quell-DB beim Erstellen einer neuen DB zugreifen.

Zum Erstellen neuer DBs ist es daher besser, eine Verbindung herzustellen postgres.

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.