支援的版本: 目前 (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。只有超級使用者才能為其他人建立資料庫(也就是說,為您不是其成員的角色建立資料庫)。

提交更正

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