?
本文檔使用
php中文網(wǎng)手冊 發(fā)布
看看你能否訪問數(shù)據(jù)庫服務(wù)器的第一個例子就是試著創(chuàng)建一個數(shù)據(jù)庫。一臺 運(yùn)行著的PostgreSQL服務(wù)器可以管理許多數(shù)據(jù) 庫。通常我們會為每個項(xiàng)目和每個用戶單獨(dú)使用一個數(shù)據(jù)庫。
節(jié)點(diǎn)管理員可能已經(jīng)為你創(chuàng)建了可以使用的數(shù)據(jù)庫。他應(yīng)該已經(jīng)告訴你這個 數(shù)據(jù)庫的名字。如果這樣你就可以省略這一步,并且跳到下一節(jié)。
以創(chuàng)建一個mydb新數(shù)據(jù)庫為例:
$ createdb mydb
如果沒有報錯,那么這一步就成功了,你就可以忽略本節(jié)余下的部分了。
如果返回類似信息:
createdb: command not found
說明PostgreSQL沒有正確安裝,要么是完全沒有安裝,要么是設(shè)置的環(huán)境變量有錯誤,如果是這樣,那么可以用絕對路徑調(diào)用該命令:
$ /usr/local/pgsql/bin/createdb mydb
在你的節(jié)點(diǎn)上這個路徑可能不一樣。請和管理員聯(lián)系或者看看安裝指導(dǎo)以獲取 正確的位置。
另外一種響應(yīng)可能是這樣:
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"?
這意味著服務(wù)器沒有啟動,或者沒有在createdb預(yù)期的地方啟動。同樣, 你也要檢查安裝指導(dǎo)或者找管理員。
另外一個響應(yīng)可能是這樣:
createdb: could not connect to database postgres: FATAL: role "joe" does not exist
在這里提到了你自己的登陸名。如果管理員沒有為你創(chuàng)建PostgreSQL用戶帳號, 就會發(fā)生這些現(xiàn)像。PostgreSQL用戶帳號和操作系統(tǒng)用戶帳號是不同的。如果你 就是管理員,參閱Chapter 20以獲取創(chuàng)建用戶帳號的幫助。你需要變成安裝PostgreSQL 的操作系統(tǒng)用戶的身份(通常是postgres)才能創(chuàng)建第一個用戶帳號。 也有可能是賦予PostgreSQL用戶名和操作系統(tǒng)用戶名不同;這種情況下,你需要 使用-U開關(guān)或者使用PGUSER環(huán)境變量聲明PostgreSQL用戶名。
如果你有個數(shù)據(jù)庫用戶帳號,但是沒有創(chuàng)建數(shù)據(jù)庫所需要的權(quán)限,那么你會看到 下面的東西
createdb: database creation failed: ERROR: permission denied to create database
并非所有用戶都經(jīng)過了創(chuàng)建新數(shù)據(jù)庫的授權(quán)。如果PostgreSQL拒絕為你創(chuàng)建數(shù)據(jù)庫, 那么你需要讓節(jié)點(diǎn)管理員賦予你創(chuàng)建數(shù)據(jù)庫的權(quán)限。出現(xiàn)這種情況時請咨詢你的節(jié)點(diǎn) 管理員。如果你自己安裝了PostgreSQL,那么你應(yīng)該以你啟動數(shù)據(jù)庫服務(wù)器的用戶 身份登陸然后參考手冊完成權(quán)限的賦予工作。 [1]
你還可以用其它名字創(chuàng)建數(shù)據(jù)庫。PostgreSQL 允許你在一個節(jié)點(diǎn)上創(chuàng)建任意數(shù)量的數(shù)據(jù)庫。數(shù)據(jù)庫名必須是以字母開頭并且 小于63個字符長。一個方便的做法是創(chuàng)建和你當(dāng)前用戶名同名的數(shù)據(jù)庫。許多 工具假設(shè)它為缺省的數(shù)據(jù)庫名,所以這樣可以節(jié)省敲鍵。要創(chuàng)建這樣的數(shù)據(jù)庫, 只需要鍵入:
$ createdb
如果你再也不想使用你的數(shù)據(jù)庫了,那么你可以刪除它。比如,如果你是數(shù) 據(jù)庫mydb的屬主(創(chuàng)建人),那么你就可以用下面的命令 刪除它:
$ dropdb mydb
(對于這條命令而言,數(shù)據(jù)庫名不是缺省的用戶名,你必須明確聲明它)這個動 作物理上將所有與該數(shù)據(jù)庫相關(guān)的文件都刪除并且不可恢復(fù),因此做這件事之 前一定要想清楚。
更多關(guān)于createdb和dropdb的信息可以 在createdb和dropdb小節(jié)找到。
[1] | PostgreSQL用戶名與系統(tǒng)賬戶名是不同的。 當(dāng)連接數(shù)據(jù)庫時,可以選擇用哪個PostgreSQL用戶連接。 如果沒有選擇,那么會自動選擇用與當(dāng)前系統(tǒng)用戶名相同的用戶來連接。 當(dāng)這樣做到的時候,會有一個與當(dāng)前系統(tǒng)用戶名相同的PostgreSQL用戶來啟動服務(wù), 同時該用戶還擁有創(chuàng)建數(shù)據(jù)庫的權(quán)限。當(dāng)然,你也可用通過使用-U選項(xiàng)來聲明要使用的用戶名。 |