Postgresql服务器上名为postgres的默认数据库


77

显然,在每个postgresql服务器安装中默认都会创建一个数据库“ postgres”。谁能告诉我或指出我的用途?

Answers:


43

似乎它并没有真正定义好的目的。根据文档:

创建数据库集群包括创建数据库数据将在其中驻留的目录,生成共享目录表(属于整个集群而不是任何特定数据库的表)以及创建“ template1”和“ postgres”数据库。

[...]

postgres数据库是默认数据库,供用户,实用程序和第三方应用程序使用。

(来源:http : //www.postgresql.org/docs/current/app-initdb.html


95

客户端应用程序连接到Postgres服务器时,必须指定要连接到的数据库。如果您不知道数据库名称(在您所连接的邮政局长所服务的群集中),则可以使用以下命令找到数据库名称列表:

psql -l

运行该命令时,psql连接到服务器并查询pg_database以获取数据库名称列表。但是,由于psql是Postgres客户端应用程序,因此如果不知道至少一个数据库的名称(Catch-22),它将无法连接到服务器。因此,在运行时,psql进行了硬编码以连接到名为“ postgres”的数据库psql -l,但是在这种情况下,您可以指定模板数据库:

psql -l -d template1

34

还有数据库template0,这是您弄乱所有其他文件时的安全网。

  1. postgres是您要连接的默认数据库。
  2. template1是创建新数据库的默认设置,它们的创建方式与template1一样
  3. 当template1损坏(错误的设置等)并且您不想花费很多时间来解决此问题时,template0很有用。只需删除template1并使用数据库template0创建一个新的template1。

10
postgres如果不使用数据库,删除数据库是否安全?
CMCDragonkai '16

@CMCDragonkai,如果我没记错的话,您仍然需要postgres数据库或类似的东西。例如,如果您对数据库进行了转储,并带有删除和重新创建应用程序数据库的选项,那么当您尝试还原到同一数据库时,由于连接到您要删除和创建的数据库,它将无法正常工作。
kaizenCoder

因此您必须连接到数据库才能删除数据库,仅连接到运行数据库的服务器还不够吗?
穆罕默德·乌默

6

上面的评论问:“如果不使用Postgres数据库,删除它安全吗?” -CMCDragonkai '16 Oct 22在10:37

从PostgreSQL文档

初始化之后,数据库集群将包含一个名为postgres的数据库,这是公用程序,用户和第三方应用程序使用的默认数据库。数据库服务器本身不需要postgres数据库存在,但是许多外部实用程序都假定它存在。

[注:数据库集群是由运行中的数据库服务器的单个实例管理的数据库的集合。


3

如果在创建新数据库时使用多个数据库连接,则无法对template1或进行所有连接template0

如果在创建新数据库时源数据库被其他连接访问,则Postgresql将引发错误。

因此,对于创建新的数据库,最好进行连接postgres

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.