支援的版本:目前 (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 使用者名稱,而不是以該使用者身份登入。

提交更正

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