2010-03-03 215 views

回答

28

它似乎並沒有一個明確的目的。根據文檔:

創建數據庫集羣包括創建數據庫數據所在的目錄,生成共享目錄表(屬於整個集羣而不是任何特定數據庫的表),以及創建「template1」和「postgres」數據庫。

[...]

的Postgres數據庫是爲用戶,實用程序和第三方應用程序使用一個默認的數據庫。

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

25

還有數據庫template0中,你的安全網,當你搞砸了所有其他人。

  1. postgres是您的默認數據庫連接到 。
  2. template1的是你的 創建新的數據庫默認情況下,這些都創造了就像模板1
  3. template0中是有用的,當模板1 被破壞(錯誤的設置等) ,你不想花很多 有時間解決這個問題。只需放下 template1並使用數據庫template0創建一個新模板1 。
+5

可以安全地刪除'postg如果你不使用res數據庫? – CMCDragonkai 2016-10-22 10:37:10

67

當客戶端應用程序連接到Postgres服務器時,它必須指定它想要連接到的數據庫。如果你不知道數據庫的名稱(由您連接郵政局長服務集羣內),你可以找到數據庫名稱的列表使用命令:

psql -l 

當您運行命令, psql連接到服務器並查詢pg_database以獲取數據庫名稱列表。但是,由於psql是Postgres客戶端應用程序,因此在不知道至少一個數據庫的名稱的情況下無法連接到服務器:Catch-22。因此,當您運行「psql -l」時,psql被硬編碼以連接到名爲「postgres」的數據庫。

-- Korry 
0

如果要創建新的數據庫時,使用多個數據庫連接,那麼所有的連接不能做template1template0

如果源數據庫在創建新數據庫時被其他連接訪問,Postgresql將拋出一個錯誤。

因此,要創建新的數據庫,最好連接postgres

enter image description here

0

上面問評論:「它是安全的,如果你不使用它來刪除Postgres數據庫?「 - CMCDragonkai 10月22日在'16 10:37

從PostgreSQL文檔9.3.3:

初始化後,一個數據庫集羣將包含一個名爲Postgres數據庫,這是指通過使用一個默認的數據庫數據庫服務器本身並不需要postgres數據庫存在,但許多外部實用程序假定它存在。

[注意:數據庫集羣是一組數據庫,它由正在運行的數據庫服務器的單個實例。]

相關問題