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

dar*_*ios 61 database postgresql

显然,每个postgresql服务器安装都默认创建一个数据库"postgres".谁能告诉我或指出我用它的文件?

小智 83

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

psql -l
Run Code Online (Sandbox Code Playgroud)

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

psql -l -d template1
Run Code Online (Sandbox Code Playgroud)


sle*_*ske 34

它似乎并没有真正明确的目的.根据文件:

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

[...]

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

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


Fra*_*ens 32

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

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

  • 如果你没有使用它,删除`postgres`数据库是否安全? (9认同)
  • 所以你必须连接到数据库才能删除数据库,连接到运行数据库的服务器还不够吗? (3认同)

小智 5

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

从PostgreSQL文档

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

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