為了建立資料庫,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
原始內容的原始副本。 當製作沒有任何站點本機新增項目的資料庫很重要時,可以複製它而不是 template1
。 更多詳細資訊出現在第 22.3 節中。
為了方便起見,有一個您可以從 shell 執行的程式來建立新資料庫,createdb
。
createdb dbname
createdb
沒有任何神奇之處。 它連接到 postgres
資料庫並發出 CREATE DATABASE
指令,與上述說明完全相同。 createdb 參考頁面包含調用詳細資訊。 請注意,沒有任何引數的 createdb
將使用目前的用戶名稱建立資料庫。
第 20 章包含有關如何限制誰可以連接到給定資料庫的資訊。
有時您想為其他人建立資料庫,並讓他們成為新資料庫的擁有者,以便他們可以自己配置和管理它。 為了實現這一點,請使用以下指令之一
CREATE DATABASEdbname
OWNERrolename
;
來自 SQL 環境,或
createdb -Orolename
dbname
來自 shell。 只有超級用戶才能為其他人(即,您不是其成員的角色)建立資料庫。
如果您在文件中發現任何不正確、與特定功能的體驗不符或需要進一步澄清的地方,請使用此表格來報告文件問題。