PostgreSQL 創(chuàng)建一個(gè)數(shù)據(jù)庫

2021-08-25 16:45 更新

看看你能否訪問數(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ù)庫。

你的站點(diǎn)管理員可能已經(jīng)為你創(chuàng)建了可以使用的數(shù)據(jù)庫。 如果這樣你就可以省略這一步, 并且跳到下一節(jié)。

要?jiǎng)?chuàng)建一個(gè)新的數(shù)據(jù)庫,在我們這個(gè)例子里叫mydb,你可以使用下面的命令:

$ createdb mydb

如果不產(chǎn)生任何響應(yīng)則表示該步驟成功,你可以跳過本節(jié)的剩余部分。

如果你看到類似下面這樣的信息:

createdb: command not found

那么就是PostgreSQL沒有安裝好?;蛘呤歉緵]安裝, 或者是你的shell搜索路徑?jīng)]有設(shè)置正確。嘗試用絕對(duì)路徑調(diào)用該命令試試:

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

在你的站點(diǎn)上這個(gè)路徑可能不一樣。和你的站點(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ù)器沒有啟動(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)是不同的。) 如果你是管理員,參閱第 21 章獲取創(chuàng)建用戶帳號(hào)的幫助。 你需要變成安裝PostgreSQL的操作系統(tǒng)用戶的身份(通常是 postgres)才能創(chuàng)建第一個(gè)用戶帳號(hào)。 也有可能是賦予你的PostgreSQL用戶名和你的操作系統(tǒng)用戶名不同; 這種情況下,你需要使用-U選項(xiàng)或者使用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

并非所有用戶都被許可創(chuàng)建新數(shù)據(jù)庫。 如果PostgreSQL拒絕為你創(chuàng)建數(shù)據(jù)庫, 那么你需要讓站點(diǎn)管理員賦予你創(chuàng)建數(shù)據(jù)庫的權(quán)限。出現(xiàn)這種情況時(shí)請(qǐng)咨詢你的站點(diǎn)管理員。 如果你自己安裝了PostgreSQL, 那么你應(yīng)該以你啟動(dòng)數(shù)據(jù)庫服務(wù)器的用戶身份登錄然后參考手冊(cè)完成權(quán)限的賦予工作。

你還可以用其它名字創(chuàng)建數(shù)據(jù)庫。PostgreSQL允許你在一個(gè)站點(diǎn)上創(chuàng)建任意數(shù)量的數(shù)據(jù)庫。 數(shù)據(jù)庫名必須是以字母開頭并且小于 63 個(gè)字符長。 一個(gè)方便的做法是創(chuàng)建和你當(dāng)前用戶名同名的數(shù)據(jù)庫。 許多工具假設(shè)該數(shù)據(jù)庫名為缺省數(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)的文件都刪除并且不可取消, 因此做這中操作之前一定要考慮清楚。

更多關(guān)于createdbdropdb的信息可以分別在createdbdropdb中找到。



為什么這么做的解釋:PostgreSQL用戶名是和操作系統(tǒng)用戶賬號(hào)分開的。 如果你連接到一個(gè)數(shù)據(jù)庫時(shí),你可以選擇以何種PostgreSQL用戶名進(jìn)行聯(lián)接; 如果你不選擇,那么缺省就是你的當(dāng)前操作系統(tǒng)賬號(hào)。 如果這樣,那么總有一個(gè)與操作系統(tǒng)用戶同名的PostgreSQL用戶賬號(hào)用于啟動(dòng)服務(wù)器, 并且通常這個(gè)用戶都有創(chuàng)建數(shù)據(jù)庫的權(quán)限。如果你不想以該用戶身份登錄, 那么你也可以在任何地方聲明一個(gè)-U選項(xiàng)以選擇一個(gè)用于連接的PostgreSQL用戶名。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)