為了建立資料庫,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。只有超級使用者才能為其他人建立資料庫(也就是說,為您不是其成員的角色建立資料庫)。
如果您在文件中發現任何不正確、與特定功能的使用經驗不符或需要進一步澄清的內容,請使用此表單來回報文件問題。