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

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

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

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

[…]

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

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

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

psql -l 

运行该命令时,psql连接到服务器并查询pg_database以获取数据库名称列表。 但是,因为psql是一个Postgres客户端应用程序,所以不知道至less有一个数据库的名字就不能连接到服务器:Catch-22。 所以,当你运行“psql -l”时,psql被硬编码连接到名为“postgres”的数据库。

 -- Korry 

还有数据库模板0,当你搞砸了所有其他的安全网。

  1. postgres是你连接的默认数据库。
  2. template1是您创build新数据库的默认值,这些数据库就像template1一样创build
  3. 当template1损坏(错误的设置等),template0是有用的,你不想花很多时间来解决这个问题。 只需放下template1并使用数据库template0创build一个新的template1即可。

如果在创build新数据库时使用多个数据库连接,则不能对template1template0所有连接。

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

所以为了创build新的数据库,最好连接postgres

在这里输入图像说明