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?

Dareios
quelle

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 )

sleske
quelle
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
ein Pferd ohne Name
quelle
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.
Frank Heikens
quelle
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.]

Herr Afrika
quelle
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

Mikael Lepistö
quelle