要建立資料庫,PostgreSQL 伺服器必須正在執行(參見 第 18.3 節)。
資料庫是使用 SQL 命令 CREATE DATABASE 建立的
CREATE DATABASE name
;
其中 name
遵循識別符號的常規規則。SQL當前角色自動成為新資料庫的所有者。資料庫所有者有權在以後刪除該資料庫(這將刪除其中所有物件,即使它們有其他所有者)。
建立資料庫是一項受限操作。有關如何授予許可權的資訊,請參見 第 21.2 節。
由於您需要連線到資料庫伺服器才能執行 CREATE DATABASE
命令,因此存在一個問題:任何站點的第一個資料庫是如何建立的?第一個資料庫總是由 initdb
命令在資料儲存區初始化時建立。(參見 第 18.2 節。)這個資料庫稱為 postgres
。 因此,要建立第一個“普通”資料庫,您可以連線到 postgres
。
在資料庫叢集初始化期間,還會建立另外兩個資料庫:template1
和 template0
。 每當在叢集中建立新資料庫時,template1
實際上都會被克隆。這意味著您在 template1
中進行的任何更改都會傳播到所有後續建立的資料庫。因此,除非您希望這些物件傳播到每個新建立的資料庫,否則請避免在 template1
中建立物件。template0
被設計為 template1
原始內容的乾淨副本。當需要建立沒有站點的本地新增內容的資料庫時,可以克隆 template0
而不是 template1
。有關更多詳細資訊,請參見 第 22.3 節。
為了方便起見,還有一個可以在 shell 中執行的程式來建立新資料庫,即 createdb
。
createdb dbname
createdb
並沒有做什麼神奇的事情。它連線到 postgres
資料庫併發出 CREATE DATABASE
命令,這與上面描述的完全相同。createdb 參考頁包含呼叫詳情。請注意,不帶任何引數的 createdb
將建立一個以當前使用者名稱命名的資料庫。
關於如何限制誰可以連線到特定資料庫的資訊,請參見 第 20 章。
有時您想為別人建立一個數據庫,並讓他們成為新資料庫的所有者,以便他們可以自己配置和管理。要實現這一點,請在 SQL 環境中使用以下命令之一
CREATE DATABASEdbname
OWNERrolename
;
或在 shell 中使用
createdb -Orolename
dbname
。只有超級使用者才能為別人(即,為非您所屬角色的角色)建立資料庫。
如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。