База данных по умолчанию с именем postgres на сервере Postgresql - PullRequest
53 голосов
/ 03 марта 2010

Очевидно, существует база данных "postgres", которая создается по умолчанию при каждой установке сервера postgresql. Может кто-нибудь сказать мне или указать мне документацию, для чего он используется?

Ответы [ 5 ]

78 голосов
/ 09 марта 2010

Когда клиентское приложение подключается к серверу Postgres, оно должно указать, к какой базе данных оно хочет подключиться. Если вы не знаете имя базы данных (в кластере, обслуживаемом администратором почты, к которому вы подключаетесь), вы можете найти список имен базы данных с помощью команды:

psql -l

Когда вы запускаете эту команду, psql подключается к серверу и запрашивает pg_database для списка имен баз данных. Однако, поскольку psql является клиентским приложением Postgres, оно не может подключиться к серверу, не зная имени хотя бы одной базы данных: Catch-22. Таким образом, psql жестко запрограммирован для подключения к базе данных «postgres» при запуске psql -l, но вы можете указать базу данных шаблонов в этом случае:

psql -l -d template1
32 голосов
/ 03 марта 2010

Похоже, что оно не имеет четко определенной цели. По документам:

Создание кластера базы данных состоит из создания каталогов, в которых будут храниться данные базы данных, создания таблиц общего каталога (таблиц, которые принадлежат всему кластеру, а не какой-либо конкретной базе данных), а также создания "template1" и "postgres базы данных.

[...]

База данных postgres - это база данных по умолчанию, предназначенная для использования пользователями, утилитами и сторонними приложениями.

(Источник: http://www.postgresql.org/docs/current/app-initdb.html)

29 голосов
/ 03 марта 2010

Существует также база данных template0, ваша сеть безопасности, когда вы облажаетесь.

  1. postgres - ваша база данных по умолчанию для связаться с.
  2. template1 по умолчанию для вас создание новых баз данных, это создан так же, как template1
  3. template0 полезен, когда template1 поврежден (неправильные настройки и т. д.) и вы не хотите тратить много время исправить это. Просто бросьте template1 и создайте новый template1 используя базу данных template0.
1 голос
/ 09 марта 2018

В вышеприведенном комментарии спрашивается: «Безопасно ли удалять базу данных postgres, если вы ее не используете?» - CMCDragonkai 22 октября 16 в 10: 37

Из документации PostgreSQL

После инициализации кластер базы данных будет содержать базу данных с именем postgres, которая является базой данных по умолчанию для использования утилитами, пользователями и сторонними приложениями. Сам сервер базы данных не требует существования базы данных postgres, но многие внешние утилиты предполагают, что она существует.

[Примечание. Кластер баз данных - это набор баз данных, который управляется одним экземпляром работающего сервера баз данных.]

1 голос
/ 05 августа 2017

Если вы используете несколько подключений к базам данных при создании новых баз данных, то все подключения не могут быть выполнены к template1 или template0.

Postgresql выдаст ошибку, если к исходной БД при создании новой БД обращаются другие соединения.

Так что для создания новых БД лучше подключить postgres.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...