如無意外,初始化成功后我們就可以建立自己的資料庫了。首先要知道,資料庫用戶是這樣訪問數據的:
所以先要啟動postmaster:
$postmaster -i -D/database&
「-i」選項允許從網路上訪問資料庫,如果要開發和使用Client/Server模式的應用程序,一定要加這個參數。「-D」指出資料庫目錄。「&"是以後台方式運行監聽進程。
現在,我們創建一個資料庫,假定叫「mydb」:
$createdb mydb
然後啟動前端訪問工具:
$psql mydb
這時會出現提示符:
mydb=>
我們便可以鍵入SQL語句構造資料庫了。例如以下命令建立一張名叫「test」的表,它由三個欄位(id、name、income)組成:
mydb=>create table test (id int2, name varchar(10), income int4);
以上操作如果沒問題就表明PostgreSQL資料庫已經創建成功。但還有一些問題需要解決,例如我們並不想讓任何人在任何地方都能訪問任何資料庫文件,這就需要建立授權/鑒別機制來分辨哪些是合法用戶的合法請求、哪些不是。
剛完成安裝的PostgreSQL默認只有一個合法超級用戶——dbms,只有它才能寫伺服器上的/database目錄,但是也由於dbms一開始就存在,所以鑒別機制對它不起作用。只要它喜歡,可以訪問任何資料庫(因為dbms可以修改鑒別機制的配置文件,下面會提到)。正如Unix系統的root用戶,它可以修改任何文件的許可權、可以修改存放用戶口令的shadow文件。所以當完成安裝后,我們就要創建新的管理者,暫且稱它為dba。
由於用字元界面的psql創建dba比較煩瑣,所以最好用GUI的pgaccess,這需要我們成功安裝RPM包⑧。完成後進入系統目錄:
#cd /usr/lib/pgsql/pgaccess
把可執行屬性賦予main.tcl:
#chmod +x main.tcl
然後便可以啟動X Window,打開一個xterm窗口,運行pgaccess:
$./main.tcl
我們只須鍵入資料庫名字(mydb)即可進入維護界面。我們必須創建一個新用戶dba(記得為它指定password),並賦予它創建其它用戶和資料庫的許可權,即選擇以下兩項:
Allow user to create databases
Allow user to create other users
保存並退出pgaccess。
最後要做的就是修改控制機器和用戶訪問資料庫的配置文件:
$chmod u+w /database/pg_hba.conf
$emacs /database/ pg_hba.conf
裡面有詳細的說明,這裡只是簡單的介紹。文件除了註釋以外,全部由統一格式的項組成:
entry_type DBNAME IP_ADDRESS ADDRESS_MASK USERAUTH [AUTH_ARG]
entry_type:項的類型,分兩種,一種是「host」,另一種是「local」。host類型的項負責網路訪問(帶有IP地址的訪問)的鑒別機制,local負責本地(即伺服器自身)Unix Socket介面訪問的鑒別;
DBNAME:資料庫名字;
IP_ADDRESS:允許訪問的IP地址範圍(與IP_MASK一起決定);
ADDRESS_MASK:同上;
USERAUTH:鑒別方式;
[AUTH_ARG]:某些鑒別方式需要的參數。
如下例子:
host mydb 192.168.0.0
55.255.255.0 crypt
這條記錄允許IP地址為192.168.0.x的機器通過加密的用戶口令文件驗證口令后訪問mydb資料庫。加密的用戶口令文件是/database/pg_shadow。這是最常用的鑒別方式。
又如:
local all trust
這條記錄允許所有用戶本地訪問(例如用遠程登錄方式訪問)任何資料庫(最好不要這樣做,雖說SQL語句本身帶有授權/鑒別機制,但小心一點還是沒有壞處的)。
假定我們採用crypt鑒別方式控制對mydb的訪問,並且通過網路連接到IP為192.168.0.3的Linux資料庫伺服器上的mydb資料庫,這時就要提供用戶名和口令:
$psql -d mydb -u -h 192.168.0.3
「-d」指出資料庫名字,「-u」指出需要提供用戶名和口令,「-h」指出伺服器IP。一旦pg_hba.conf指定使用crypt機制則必須加「-u」參數,否則無法連接資料庫,即使你是dbms。所以從今以後我們便要以dba的身份來維護資料庫(dbms由於沒有加密的口令存放在pg_shadow,所以無法通過crypt驗證登錄資料庫,不過,必要時dbms還是可以修改pg_hba.conf來強行登錄)。
心急的朋友已經忍不住了——怎樣開發PostgreSQL的客戶端應用呢?
放心,PostgreSQL提供了基於Windows95的ODBC驅動,只要安裝了ODBC驅動,便可以用VC、Delphi等開發應用。另外,通過JDBC驅動訪問PostgreSQL也可以(例如Jbuilder里有關的資料庫訪問API或JavaBean等)。
更詳細的信息請參閱有關文檔或訪問http://www.postgresql.org。
[火星人 ] 在Linux上應用PostgreSQL已經有513次圍觀