標籤:
看看你能否訪問資料庫伺服器的第一個例子就是試著建立一個資料庫。一台運行著的 PostgreSQL 伺服器可以管理許多資料庫。通常我們會為每個項目和每個使用者單獨使用一個資料庫。
節點管理員可能已經為你建立了可以使用的資料庫。他應該已經告訴你這個資料庫的名字。如果這樣你就可以省略這一步,並且跳到下一節。
要建立一個新的資料庫(在我們這個例子裡叫 mydb),你可以使用下面的命令:
$ createdb mydb
它應該產生下面這樣的響應:
CREATE DATABASE
如果這樣,那麼這一步就成功了,你就可以忽略本節餘下的部分了。
如果你看到類似下面這樣的資訊:
createdb: command not found
那麼就是 PostgreSQL 沒有安裝好:要麼是就根本沒裝上、要麼是搜尋路徑沒有設定正確。嘗試用絕對路徑調用該命令試試:
$ /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 使用者帳號和作業系統使用者帳號是不同的。如果你就是管理員,參閱章18以擷取建立使用者帳號的協助。你需要變成安裝 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建立一個資料庫