web-dev-qa-db-fra.com

Base de données par défaut nommée postgres sur le serveur Postgresql

Apparemment, une base de données "postgres" est créée par défaut sur chaque installation de serveur postgresql. Quelqu'un peut-il me dire ou m'indiquer la documentation à quoi elle sert?

49
dareios

Il semble qu’il n’ait pas vraiment de but bien défini. Selon les docs:

La création d'un cluster de bases de données consiste à créer les répertoires dans lesquels les données de la base de données vivront, à générer les tables de catalogue partagées (tables appartenant à l'ensemble du cluster plutôt qu'à une base de données particulière) et à créer les bases de données "template1" et "postgres". 

[...]

La base de données postgres est une base de données par défaut destinée à être utilisée par les utilisateurs, les utilitaires et les applications tierces. 

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

31
sleske

Lorsqu'une application cliente se connecte à un serveur Postgres, elle doit spécifier la base de données à laquelle elle souhaite se connecter. Si vous ne connaissez pas le nom d'une base de données (dans le cluster desservi par le postmaster auquel vous vous connectez), vous pouvez trouver une liste de noms de bases de données à l'aide de la commande:

psql -l

Lorsque vous exécutez cette commande, psql se connecte au serveur et interroge pg_database pour obtenir une liste des noms de base de données. Toutefois, psql étant une application cliente Postgres, il ne peut pas se connecter au serveur sans connaître le nom d'au moins une base de données: Catch-22. Ainsi, psql est codé en dur pour se connecter à une base de données nommée "postgres" lorsque vous exécutez psql -l, mais vous pouvez spécifier une base de données template dans ce cas: 

psql -l -d template1
75
user289919

Il existe également la base de données template0, votre filet de sécurité lorsque vous bousillez tous les autres.

  1. postgres est votre base de données par défaut pour vous connecter à
  2. template1 est votre choix par défaut pour créer de nouvelles bases de données, elles sont créées exactement comme template1
  3. template0 est utile lorsque template1 est corrompu (paramètres incorrects, etc.) et que vous ne voulez pas perdre beaucoup de temps à résoudre ce problème. Il suffit de déposer Template1 et de créer un nouveau template1 En utilisant la base de données template0.
28
Frank Heikens

Le commentaire ci-dessus demandait: "Est-il prudent de supprimer la base de données postgres si vous ne l'utilisez pas?" - CMCDragonkai 22 oct. 16 à 10:37

De la documentation PostgreSQL

Après l’initialisation, un cluster de base de données contiendra une base de données nommée postgres, qui est conçue comme une base de données par défaut à utiliser par les utilitaires, les utilisateurs et les applications tierces. Le serveur de base de données lui-même ne nécessite pas l'existence de la base de données postgres, mais de nombreux utilitaires externes supposent qu'elle existe.

[Remarque: un cluster de bases de données est un ensemble de bases de données gérées par une instance unique d'un serveur de base de données en cours d'exécution.]

1
Mr Africa

Si vous utilisez plusieurs connexions de base de données lors de la création de nouvelles bases de données, toutes les connexions ne peuvent pas être établies avec template1 ou template0

Postgresql générera une erreur si d'autres bases de données permettent d'accéder à la base de données source lors de la création de la base de données.

Donc, pour créer de nouvelles bases de données, il est préférable de connecter postgres.

 enter image description here

0
Mikael Lepistö