18.2. 建立資料庫

為了建立和刪除資料庫, 必須先執行PostgreSQL伺服器(參閱 Section 16.3)。

資料庫是用 SQL 命令 CREATE DATABASE: 建立的:

CREATE DATABASE name;

這裡的 name 遵循SQL標識符的一般規則。 目前用戶自動成為此新資料庫的所有者。同時,以後刪除這個資料庫也是這個用戶的特權(同時還會刪除其中的所有對象, 即使那些對像有不同的所有者也這樣。)

建立資料庫是一個有限制的操作。參閱 Section 17.2 獲取如何賦權限的訊息。

因為您需要與資料庫伺服器連線才能執行命令CREATE DATABASE, 那麼還有一個問題是任意節點的第一個資料庫是怎樣建立的? 第一個資料庫總是由initdb命令在初始化資料儲存區的時候建立的。 (參閱Section 16.2。)這個資料庫叫template1而且不能被刪除。 因此要建立第一個"真正"的資料庫的時候您可以與template1連線。

template1的名字可不是隨便取的,當建立一個新的資料庫時, 實際上就是克隆了(複製)了模板資料庫。 這就意味著您對template1做的任何修改都會傳播到所有隨後建立的資料庫。 這就意味著說您不能把模板資料庫用於真正的工作中, 但是如果明智地使用這個特性,那它可以帶來許多方便。 更多細節見Section 18.3。(譯註:比如增加用戶定義函數等等。)

另外,為了方便,您還可以用一個可以在 shell 中執行的程序來建立新資料庫,createdb

createdb dbname

createdb 沒變什麼魔術,它和template1連接並執行 CREATE DATABASE 命令。 createdb 的手冊頁包含使用它的細節。尤其是不帶任何參數調用 createdb 將以目前用戶名為名稱建立資料庫, 這可能是也可能不是您要的。

注意: Chapter 19 包含有關如何限制某個用戶可以連接的資料庫的訊息。

有時候您想為其他什麼人建立一個資料庫。那個用戶應該成為新資料庫的所有者,這樣他就可以自己配置和管理這個資料庫。要實現這個目標, 使用下列命令中的某一條:

CREATE DATABASE dbname OWNER username;

上面的是在 SQL 環境中,或者是

createdb -O username dbname

要想為其他用戶建立一個資料庫,您自己必須是資料庫的超級用戶。