支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3

22.2. 建立資料庫 #

為了建立資料庫,PostgreSQL 伺服器必須啟動並執行(請參閱第 18.3 節)。

資料庫是使用 SQL 指令 CREATE DATABASE 建立的

CREATE DATABASE name;

其中 name 遵循一般規則SQL識別符。目前的角色會自動成為新資料庫的擁有者。移除資料庫的權限屬於資料庫的擁有者(這也會移除其中的所有物件,即使它們有不同的擁有者)。

建立資料庫是一項受限制的操作。 有關如何授予權限,請參閱第 21.2 節

由於您需要連接到資料庫伺服器才能執行 CREATE DATABASE 指令,因此問題仍然是如何在任何給定站點建立第一個資料庫。 第一個資料庫始終由 initdb 指令在初始化資料儲存區域時建立。 (請參閱第 18.2 節。) 此資料庫稱為 postgres 因此,要建立第一個普通的資料庫,您可以連接到 postgres

在資料庫叢集初始化期間,也會建立另外兩個資料庫 template1template0 每當在叢集中建立新資料庫時,基本上會複製 template1。 這表示您在 template1 中所做的任何變更都會傳播到所有後續建立的資料庫。 因此,除非您希望將它們傳播到每個新建立的資料庫,否則請避免在 template1 中建立物件。 template0 旨在作為 template1 原始內容的原始副本。 當製作沒有任何站點本機新增項目的資料庫很重要時,可以複製它而不是 template1。 更多詳細資訊出現在第 22.3 節中。

為了方便起見,有一個您可以從 shell 執行的程式來建立新資料庫,createdb

createdb dbname

createdb 沒有任何神奇之處。 它連接到 postgres 資料庫並發出 CREATE DATABASE 指令,與上述說明完全相同。 createdb 參考頁面包含調用詳細資訊。 請注意,沒有任何引數的 createdb 將使用目前的用戶名稱建立資料庫。

注意

第 20 章包含有關如何限制誰可以連接到給定資料庫的資訊。

有時您想為其他人建立資料庫,並讓他們成為新資料庫的擁有者,以便他們可以自己配置和管理它。 為了實現這一點,請使用以下指令之一

CREATE DATABASE dbname OWNER rolename;

來自 SQL 環境,或

createdb -O rolename dbname

來自 shell。 只有超級用戶才能為其他人(即,您不是其成員的角色)建立資料庫。

提交更正

如果您在文件中發現任何不正確、與特定功能的體驗不符或需要進一步澄清的地方,請使用此表格來報告文件問題。