wake-up-neo.net

Standarddatenbank mit dem Namen postgres auf dem Postgresql-Server

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

49
dareios

Es scheint, dass es keinen genau definierten Zweck hat. Laut den Unterlagen:

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

[...]

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

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

31
sleske

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, das vom Postmaster, zu dem Sie eine Verbindung herstellen, verwaltet wird), finden Sie mit dem Befehl eine Liste mit Datenbanknamen:

psql -l

Wenn Sie diesen Befehl ausführen, stellt psql eine Verbindung zum Server her und fragt pg_database nach einer Liste von Datenbanknamen. Da es sich bei psql jedoch um eine Postgres-Clientanwendung handelt, kann keine Verbindung zum Server hergestellt werden, ohne dass der Name mindestens einer Datenbank bekannt ist: Catch-22. Daher ist psql für die Verbindung zu einer Datenbank namens "postgres" hart codiert, wenn Sie psql -l ausführen. In diesem Fall können Sie jedoch eine Vorlagendatenbank angeben: 

psql -l -d template1
75
user289919

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

  1. postgres ist Ihre Standarddatenbank, mit der verbunden werden soll.
  2. template1 ist Ihre Standardeinstellung für das Erstellen von neuen Datenbanken Sie werden genau wie template1 erstellt
  3. template0 ist nützlich, wenn template1 beschädigt ist (falsche Einstellungen usw.) und Sie möchten nicht viel Zeit dafür einsetzen. Legen Sie einfach Template1 ab und erstellen Sie eine neue Vorlage1 Mit der Datenbank template0.
28
Frank Heikens

Der obige Kommentar fragte: "Ist es sicher, die Postgres-Datenbank zu löschen, wenn Sie sie nicht verwenden?" - CMCDragonkai 22. Oktober 16 um 10:37

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 ist die Postgres-Datenbank nicht erforderlich. Viele externe Hilfsprogramme gehen jedoch davon aus, dass sie vorhanden ist.

[Hinweis: Ein Datenbankcluster ist eine Sammlung von Datenbanken, die von einer einzelnen Instanz eines ausgeführten Datenbankservers verwaltet wird.]

1
Mr Africa

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

Postgresql gibt einen Fehler aus, wenn auf den Quell-DB beim Erstellen eines neuen DBs von anderen Verbindungen zugegriffen wird.

Um neue DBs zu erstellen, ist es besser, postgres zu verbinden.

 enter image description here

0
Mikael Lepistö