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