2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 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 / 7.2

1.3. 建立資料庫 #

要檢視您是否可以訪問資料庫伺服器,首先要嘗試建立一個數據庫。一個正在執行的 PostgreSQL 伺服器可以管理多個數據庫。通常,每個專案或每個使用者使用一個單獨的資料庫。

您的站點管理員可能已經為您建立了一個數據庫。如果是這樣,您可以跳過此步驟,直接進入下一節。

要從命令列建立新資料庫(本例中名為 mydb),請使用以下命令:

$ createdb mydb

如果沒有任何響應,則表示此步驟成功,您可以跳過本節的其餘部分。

如果您看到類似的訊息:

createdb: command not found

則表示 PostgreSQL 未正確安裝。要麼根本沒有安裝,要麼您的 shell 的搜尋路徑未設定為包含它。請嘗試使用絕對路徑呼叫命令:

$ /usr/local/pgsql/bin/createdb mydb

您所在站點的路徑可能不同。請聯絡您的站點管理員或檢視安裝說明來糾正這種情況。

另一個可能的響應是:

createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
        Is the server running locally and accepting connections on that socket?

這意味著伺服器未啟動,或者它監聽的埠不是 createdb 期望與之通訊的埠。再次檢查安裝說明或諮詢管理員。

另一個可能的響應是:

createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL:  role "joe" does not exist

其中提到了您的登入名。如果管理員未為您建立 PostgreSQL 使用者帳戶,就會發生這種情況。(PostgreSQL 使用者帳戶與作業系統使用者帳戶是分開的。)如果您是管理員,請參閱 第 21 章 來建立帳戶。您需要切換到安裝 PostgreSQL 的作業系統使用者(通常是 postgres)來建立第一個使用者帳戶。也可能是為您分配了一個與您的作業系統使用者名稱不同的 PostgreSQL 使用者名稱;在這種情況下,您需要使用 -U 開關或設定 PGUSER 環境變數來指定您的 PostgreSQL 使用者名稱。

如果您擁有使用者帳戶但該帳戶沒有建立資料庫所需的許可權,您將看到以下內容:

createdb: error: database creation failed: ERROR:  permission denied to create database

並非所有使用者都有權建立新資料庫。如果 PostgreSQL 拒絕為您建立資料庫,那麼站點管理員需要授予您建立資料庫的許可權。如果發生這種情況,請諮詢您的站點管理員。如果您自己安裝了 PostgreSQL,那麼在本教程中,您應該使用啟動伺服器的那個使用者帳戶登入。 [1]

您也可以建立其他名稱的資料庫。PostgreSQL 允許您在一個站點上建立任意數量的資料庫。資料庫名稱的第一個字元必須是字母,並且長度限制為 63 位元組。一個方便的選擇是建立與您當前使用者名稱同名的資料庫。許多工具預設使用該資料庫名,因此可以節省您的輸入。要建立該資料庫,只需輸入:

$ createdb

如果您不再需要使用某個資料庫,可以將其刪除。例如,如果您是資料庫 mydb 的所有者(建立者),可以使用以下命令將其銷燬:

$ dropdb mydb

(對於此命令,資料庫名不會預設使用使用者帳戶名。您必須始終指定它。)此操作會物理刪除與資料庫相關的所有檔案,且無法撤銷,因此只能經過深思熟慮後執行。

有關 createdbdropdb 的更多資訊,請分別參閱 createdbdropdb



[1] 解釋為何如此:PostgreSQL 使用者名稱與作業系統使用者帳戶是分開的。連線資料庫時,您可以選擇連線的 PostgreSQL 使用者名稱;如果未選擇,則預設使用與您當前作業系統帳戶相同的名稱。碰巧的是,總會有一個 PostgreSQL 使用者帳戶,其名稱與啟動伺服器的作業系統使用者名稱稱相同,而且該使用者也始終擁有建立資料庫的許可權。您也可以不登入為該使用者,而是在所有地方使用 -U 選項來選擇一個 PostgreSQL 使用者名稱進行連線。

提交更正

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