显然,每个postgresql服务器安装都默认创建一个数据库“postgres”。任何人都可以告诉我或指出我用它的文件吗?
答案 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,你的安全网。
答案 3 :(得分:1)
如果在创建新数据库时使用多个数据库连接,则无法对template1
或template0
进行所有连接。
如果在创建新数据库时源数据库被其他连接访问,则Postgresql将抛出错误。
因此,要创建新数据库,最好连接postgres
。
答案 4 :(得分:1)
上面的评论问道:“如果你不使用它,删除postgres数据库是否安全?” - CMCDragonkai 2016年10月22日10:37
From the PostgreSQL documentation
初始化后,数据库集群将包含一个名为postgres的数据库,该数据库用作实用程序,用户和第三方应用程序使用的默认数据库。数据库服务器本身不需要postgres数据库存在,但许多外部实用程序假定它存在。
[注意:数据库集群是由正在运行的数据库服务器的单个实例管理的数据库集合。]