天天看點

部分 I. 教程_第 1 章 從頭開始_1.3. 建立一個資料庫

1.3. 建立一個資料庫

看看你能否通路資料庫伺服器的第一個例子就是試着建立一個資料庫。 一台運作着的PostgreSQL伺服器可以管理許多資料庫。 通常我們會為每個項目和每個使用者單獨使用一個資料庫。

你的站點管理者可能已經為你建立了可以使用的資料庫。 如果這樣你就可以省略這一步, 并且跳到下一節。

要建立一個新的資料庫,在我們這個例子裡叫

mydb

,你可以使用下面的指令:

$                 createdb mydb      

如果不産生任何響應則表示該步驟成功,你可以跳過本節的剩餘部分。

如果你看到類似下面這樣的資訊:

createdb: command not found      

那麼就是PostgreSQL沒有安裝好。或者是根本沒安裝, 或者是你的shell搜尋路徑沒有設定正确。嘗試用絕對路徑調用該指令試試:

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

在你的站點上這個路徑可能不一樣。和你的站點管理者聯系或者看看安裝指導擷取正确的位置。

另外一種響應可能是這樣:

createdb: could not connect to database postgres: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?      

這意味着該伺服器沒有啟動,或者沒有按照

createdb

預期地啟動。同樣, 你也要檢視安裝指導或者咨詢管理者。

另外一個響應可能是這樣:

createdb: could not connect to database postgres: FATAL:  role "joe" does not exist      

在這裡提到了你自己的登入名。如果管理者沒有為你建立PostgreSQL使用者帳号, 就會發生這些現象。(PostgreSQL使用者帳号和作業系統使用者帳号是不同的。) 如果你是管理者,參閱

第 21 章

擷取建立使用者帳号的幫助。 你需要變成安裝PostgreSQL的作業系統使用者的身份(通常是 

postgres

)才能建立第一個使用者帳号。 也有可能是賦予你的PostgreSQL使用者名和你的作業系統使用者名不同; 這種情況下,你需要使用

-U

選項或者使用

PGUSER

環境變量指定你的PostgreSQL使用者名。

如果你有個資料庫使用者帳号,但是沒有建立資料庫所需要的權限,那麼你會看到下面的資訊:

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

并非所有使用者都被許可建立新資料庫。 如果PostgreSQL拒絕為你建立資料庫, 那麼你需要讓站點管理者賦予你建立資料庫的權限。出現這種情況時請咨詢你的站點管理者。 如果你自己安裝了PostgreSQL, 那麼你應該以你啟動資料庫伺服器的使用者身份登入然後參考手冊完成權限的賦予工作。 

[1]

你還可以用其它名字建立資料庫。PostgreSQL允許你在一個站點上建立任意數量的資料庫。 資料庫名必須是以字母開頭并且小于 63 個字元長。 一個友善的做法是建立和你目前使用者名同名的資料庫。 許多工具假設該資料庫名為預設資料庫名,是以這樣可以節省你的敲鍵。 要建立這樣的資料庫,隻需要鍵入:

$                 createdb      

如果你再也不想使用你的資料庫了,那麼你可以删除它。 比如,如果你是資料庫

mydb

的所有人(建立人), 那麼你就可以用下面的指令删除它:

$                 dropdb mydb      

(對于這條指令而言,資料庫名不是預設的使用者名,是以你就必須聲明它) 。這個動作将在實體上把所有與該資料庫相關的檔案都删除并且不可取消, 是以做這中操作之前一定要考慮清楚。

更多關于

createdb

dropdb

的資訊可以分别在

createdb dropdb

中找到。

[1] 

為什麼這麼做的解釋:PostgreSQL使用者名是和作業系統使用者賬号分開的。 如果你連接配接到一個資料庫時,你可以選擇以何種PostgreSQL使用者名進行聯接; 如果你不選擇,那麼預設就是你的目前作業系統賬号。 如果這樣,那麼總有一個與作業系統使用者同名的PostgreSQL使用者賬号用于啟動伺服器, 并且通常這個使用者都有建立資料庫的權限。如果你不想以該使用者身份登入, 那麼你也可以在任何地方聲明一個

-U

選項以選擇一個用于連接配接的PostgreSQL使用者名。

本文轉自PostgreSQL中文社群,原文連結: