PostgreSQL7.0手冊-教程 -71. 開始
2019-09-08 23:34:02
供稿:網(wǎng)友
第七十一章. 開始
內(nèi)容
設(shè)置你的運行環(huán)境
運行SQL界面(psql)
管理數(shù)據(jù)庫
新的 Postgres 用戶如何開始工作的內(nèi)容.
某些使用 Postgres 所需要的步驟可以由任何 Postgres 用戶執(zhí)行, 而另外一些步驟就必須由節(jié)點數(shù)據(jù)庫管理員執(zhí)行.這個數(shù)據(jù)庫管理員就是安裝該軟件,創(chuàng)建數(shù)據(jù)庫目錄并啟動postmaster 進程的人.這個人不必是 UNIX 超級用戶(“root”)或計算機系統(tǒng)管理員;一個人可以在沒有任何特殊帳號或權(quán)限的情況下安裝和使用Postgres.
如果你自己安裝 Postgres ,請參閱管理員手冊中的安裝指導,安裝完成后再回到本手冊.
在這本手冊里,任何以字符“%”開頭的例子都應該在 UNIX shell 命令行上輸入的命令.任何以字符 “*”開頭的例子都是 Postgres 查詢語言-Postgres SQL 的例子.
設(shè)置你的運行環(huán)境
本節(jié)討論如何設(shè)置你的運行環(huán)境,以便運行你的前端應用.我們假設(shè)你已經(jīng)成功安裝并運行了Postgres;關(guān)于如何安裝 Postgres 請參閱管理員手冊.
Postgres 是一個client/server 應用軟件.作為用戶,你只需要訪問安裝后的客戶端部分(一個客戶端應用的例子就是 SQL 界面 psql).為了簡單起見,我們假設(shè) Postgres 裝在 /usr/local/pgsql目錄下.因此,當你看到 /usr/local/pgsql 目錄時,你應該把它替換成 Postgres 安裝的實際目錄. 所有 Postgres 命令都裝在 /usr/local/pgsql/bin 目錄下.因此,你應該把這個目錄加入你的 shell 命令路徑(PATH)里.如果你使用csh或tcsh,你應該加入下面一行:
% set path = ( /usr/local/pgsql/bin path )
到你的家目錄的 .login 文件里面去.如果你使用 Bourne shell 變種,如 sh,ksh,或bash,你應該加入
% PATH=/usr/local/pgsql/bin:$PATH
% export PATH
到你的家目錄中的 .profile 文件中去.從現(xiàn)在開始,我們假設(shè)你已經(jīng)把 Postgres 的二進制目錄加入到你的路徑里去了.另外,我們在本文檔中將經(jīng)常使用“設(shè)置 shell 變量” 或 “設(shè)置環(huán)境變量”這些字眼.如果你還不太明白上一段關(guān)于修改你的搜索路徑的描述,請先參考UNIX的手冊頁中關(guān)于你用的shell的文檔,然后再往下讀.
如果節(jié)點數(shù)據(jù)庫管理員并沒有按缺省的方式設(shè)置數(shù)據(jù)庫,那么你還有一些事情要做.比如,如果數(shù)據(jù)庫服務器是一臺遠程的機器,你需要設(shè)置PGHOST 環(huán)境變量為數(shù)據(jù)庫服務器的機器名. 環(huán)境變量 PGPORT可能也需要設(shè)置,最后一招:如果當你試著啟動一個應用而該應用報告說不能與postmaster 建立聯(lián)接時, 你應該馬上與你的數(shù)據(jù)庫管理員聯(lián)系以確保你正確地設(shè)置了環(huán)境變量.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
啟動 SQL 界面(psql)
假設(shè)你的數(shù)據(jù)庫管理員已經(jīng)成功地運行了postmaster 并且給你了使用數(shù)據(jù)庫的權(quán)限,你(作為一個用戶)就可以運行應用了.我們前面已經(jīng)提到過,你應該將/usr/local/pgsql/bin 加入到你的搜索路徑中去.在大多數(shù)情況下,這是你在準備階段所要做的所有工作.
我們支持兩種不同的聯(lián)接方式.數(shù)據(jù)庫管理員將選擇是否允許TCP/IP網(wǎng)絡(luò)聯(lián)接或是只允許本地(同一臺機器)的socket(套接字)聯(lián)接.這種選擇在你與數(shù)據(jù)庫聯(lián)接碰到問題時就特別重要了.T
如果你在執(zhí)行 Postgres 命令(如 psql 或 createdb)時碰到下面的錯誤輸出:
% psql template1
Connection to database 'postgres' failed.
connectDB() failed: Is the postmaster running and accepting connections
at 'UNIX Socket' on port '5432'?
或
% psql -h localhost template1
Connection to database 'postgres' failed.
connectDB() failed: Is the postmaster running and accepting TCP/IP
(with -i) connections at 'localhost' on port '5432'?
錯誤的原因通常是
postmaster 沒有運行,或
你連錯了服務器主機.
如果錯誤信息象下面這樣:
FATAL 1:Feb 17 23:19:55:process userid (2360) != database owner (268)
表明數(shù)據(jù)庫管理員用錯誤的用戶啟動了 postmaster .告訴他以Postgres超級用戶身份重起.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
管理數(shù)據(jù)庫
現(xiàn)在Postgres 已經(jīng)裝好并運行起來了,我們就可以創(chuàng)建一些數(shù)據(jù)庫來做一些實驗.我們通過這種方法來描述如何管理數(shù)據(jù)庫的基本命令。
大多數(shù) Postgres 應用假定你的數(shù)據(jù)庫名(如果沒有指明的話)就是你的計算機用戶名.
如果你的數(shù)據(jù)庫管理員給你的數(shù)據(jù)庫帳號沒有創(chuàng)建數(shù)據(jù)庫的權(quán)限,那么她應該告訴你你的數(shù)據(jù)庫名.如果是這樣,你可以略過創(chuàng)建和刪除數(shù)據(jù)庫的章節(jié).
創(chuàng)建數(shù)據(jù)庫
假設(shè)你想創(chuàng)建一個叫 mydb 的數(shù)據(jù)庫.你可以用如下命令來創(chuàng)建:
% createdb mydb
如果你沒有創(chuàng)建數(shù)據(jù)庫的權(quán)限,你會看到如下的信息:
% createdb mydb
WARN:user "your username" is not allowed to create/destroy databases
createdb: database creation failed on mydb.
Postgres 允許你在一個節(jié)點上創(chuàng)建任意多個數(shù)據(jù)庫,并且你將自動成為你所創(chuàng)建的數(shù)據(jù)庫的管理員.數(shù)據(jù)庫名必須以字母開頭并且小于32個字符長.并不是每個用戶都能成為數(shù)據(jù)庫管理員.如果Postgres拒絕為你創(chuàng)建數(shù)據(jù)庫.你應該向節(jié)點數(shù)據(jù)庫管理員請求給予創(chuàng)建數(shù)據(jù)庫的權(quán)限.出現(xiàn)這種情況時請與你的節(jié)點管理員聯(lián)系。
訪問數(shù)據(jù)庫
一旦你建好了一個數(shù)據(jù)庫,你可以通過下面手段訪問它:
運行 Postgres 的終端監(jiān)控程序(如 psql),你可以交互地輸入,編輯和運行SQL 命令.
使用現(xiàn)有的本地前端工具,比如 pgaccess 或 ApplixWare (通過 ODBC)來創(chuàng)建和操作數(shù)據(jù)庫.
使用一種具有支持 Postgres 接口的語言,如 perl 或 tcl.這些語言中有些還有一些非常方便和強大的 GUI 工具,這些工具可以幫你構(gòu)造客戶應用.我們上面說的 pgaccess,就是一個用 tk/tcl 寫的類似工具的例子.
寫一個 使用 LIBPQ 庫的 C 程序. 你便可以在C里面提交一個 SQL 命令并且在程序里面得到結(jié)果和狀態(tài)的響應. 這些接口將在程序員手冊里進一步討論。
你可以運行 psql,試一下本手冊里的例子.你可以用下面命令激活 mydb 數(shù)據(jù)庫:
% psql mydb
將提示下面的問候信息:
Welcome to the POSTGRESQL interactive sql monitor:
Please read the file COPYRIGHT for copyright terms of POSTGRESQL
type /? for help on slash commands
type /q to quit
type /g or terminate with semicolon to execute query
You are currently connected to the database: template1
mydb=>
這個命令提示符表明終端監(jiān)控器正等候你的輸入,你可以向由終端監(jiān)控器維護的工作區(qū)鍵入SQL 查詢. psql 對由反斜杠開頭的字符進行轉(zhuǎn)義,“/” 比如你可以通過鍵入下面字符獲得各種 PostgresSQL 命令的語法幫助:
mydb=> /h
一旦你完成了向工作區(qū)的查詢輸入,你可以鍵入下面字符把工作區(qū)的內(nèi)容提交給Postgres 服務進程:
mydb=> /g
T這句話告訴服務進程執(zhí)行查詢.如果你以分號結(jié)束你的查詢,“/g” 可以不輸入. psql 將自動處理分號結(jié)尾的查詢.如果從一文件中讀取查詢,比如說從 myFile,鍵入:
mydb=> /i fileName
從 psql 退出到 UNIX,鍵入
mydb=> /q
psql 將退出到命令行.(有關(guān)更多轉(zhuǎn)義符的信息,在監(jiān)控器提示符下鍵入 /h .)空白(如,空格,制表符和新行)可在 SQL查詢里自由使用.單行注釋使用 "--".在 "--"后面該行的所有內(nèi)容都將被忽略.多行注釋使用 "/* ... */".
刪除數(shù)據(jù)庫
如果你是數(shù)據(jù)庫mydb 的管理員,你可以用下面UNIX命令刪除該數(shù)據(jù)庫:
% dropdb mydb
這個命令物理上刪除所有與該數(shù)據(jù)庫關(guān)聯(lián)的UNIX文件,這個動作是不可逆的,因而執(zhí)行這個動作之前一定要三思而后行.
----------------------------------------------------------------------------