2008年8月25日 星期一

PostgreSQL 8.3 中 創建資料庫集群

PostgreSQL 8.3 中 創建資料庫集群

手冊是這樣寫的,()內是我的說明。

用檔系統的術語來說,一個資料庫集群是一個目錄,所有資料都將存放在這個目錄中。
我們把它稱做資料目錄或資料區。

在哪里存放資料完全取決於你的選擇,我們沒有缺省值,儘管 /usr/local/pgsql/data
或 /var/lib/pgsql/data 這樣的目錄很常用。

(即是由 initdb -D 來決定 data 的位置,集群可視為「資料庫」內有很多的「表」)
(/var/lib/pgsql/data 是預設的目錄,沒事不要改。)

要初始化一個資料庫集群,可以使用 initdb 命令,這個命令與 PostgreSQL 一起安裝。
你可以用 -D 選項指定資料目錄的位置,例如:

$ initdb -D /usr/local/pgsql/data

你必須以 PostgreSQL 用戶的身份來執行這條命令,這一點我們在前面一節描述過。

【提示】作為 -D 選項的替代品,你還可以使用 PGDATA 環境變數。

如果你聲明的路徑還不存在,initdb 將試圖創建它。如果你按照我們的建議創建了一個非特權
帳戶的話,你很有可能缺少做這些事情的許可權。這時,你可以自己創建該目錄(以 root 身份)
然後把該目錄的所有權交給 PostgreSQL 用戶或者賦與它寫許可權。

下面是可能有效的方法:
root# mkdir /usr/local/pgsql/data
root# chown postgres /usr/local/pgsql/data
root# su postgres
postgres$ initdb -D /usr/local/pgsql/data

如果資料目錄看起來像已經初始化過了,那麼 initdb 會拒絕運行。

因為資料目錄包含所有存儲在資料庫裏的資料,所以出於安全考慮,這個目錄不能給任何非授權用戶訪問。
因此,initdb 禁止除 PostgreSQL 用戶帳戶以外的任何用戶訪問這個目錄。

不過,因為目錄的內容是安全的,所以缺省的用戶端認證設置允許任意本地用戶連接到資料庫甚至成為超級用戶。

如果你不信任本地用戶,我們建議你使用 initdb 的 -W, --pwprompt 或 --pwfile 選項給超級用戶賦予一個口令。

還有,聲明 -A md5 或 -A password ,這樣就不會使用缺省的 trust 身份認證。或者在執行 initdb 之後,第一次
啟動伺服器之前修改 pg_hba.conf 文件。另外一些合理的方法包括 ident 認證或者用檔系統許可權禁止連接。

沒有留言: