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

时间:2010-03-03 10:55:20

标签: database postgresql

显然,每个postgresql服务器安装都默认创建一个数据库“postgres”。任何人都可以告诉我或指出我用它的文件吗?

5 个答案:

答案 0 :(得分:75)

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

psql -l

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

psql -l -d template1

答案 1 :(得分:31)

它似乎并没有明确的目的。根据文件:

  

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

     

[...]

     

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

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

答案 2 :(得分:29)

当你搞砸所有其他人时,还有数据库template0,你的安全网。

  1. postgres是您的默认数据库 连接。
  2. template1是您的默认值 创建新数据库,这些是 像template1
  3. 一样创建
  4. template1在template1时非常有用 已损坏(设置错误等) 而且你不想花很多钱 时间来解决这个问题。放下 template1并创建一个新的template1 使用数据库template0。

答案 3 :(得分:1)

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

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

因此,要创建新数据库,最好连接postgres

enter image description here

答案 4 :(得分:1)

上面的评论问道:“如果你不使用它,删除postgres数据库是否安全?” - CMCDragonkai 2016年10月22日10:37

From the PostgreSQL documentation

  

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

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