| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 16. 服務器運行時環境 | Fast Forward | Next |
在你做任何事情之前,你必須初始化磁盤上的數據庫的存儲區間。 我們管它叫數據庫集群。(SQL 使用術語目錄集群。) 一個數據庫集群是一系列數據庫的集合,這些數據庫可以通過單個數據庫服務器的實例訪問。 在初始化後,一個數據庫集群將包含一個叫template1的數據庫。 正如其名一樣,這個數據庫將作為隨後創建的數據庫的模版;在實際工作中不應該使用這個庫。 (參閱 Chapter 18 獲取有關創建數據庫的信息。)
用文件系統的術語來說,一個數據庫集群將是一個目錄,所有數據都將存放在這個目錄中。 我們把它稱做數據目錄或數據區。 在哪裡存放數據完全是你的選擇,我們沒有缺省值,盡管 /usr/local/pgsql/data 或 /var/lib/pgsql/data 這樣的目錄很常用。 要初始化一個數據庫集群,可以使用命令 initdb, 這個命令與 PostgreSQL 一起安裝。你可以用-D 標識你為你的數據庫系統選擇的文件系統位置,例如:
$ initdb -D /usr/local/pgsql/data
請注意你必須以PostgreSQL用戶的身份來執行這條命令, 這一點我們在前面一節描述過。
如果你聲明的路徑還不存在,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 給超級用戶賦予一個口令。在 initdb 之後, 在你第一次啟動服務器之前修改 pg_hba.conf,讓它使用 md5 或者 password,而不是 trust 認證方式。 (另外一些方法包括 ident 認證或者用文件系統權限限止聯接。參閱 Chapter 19 獲取更多細節。)
initdb 同時也為數據庫集群初始化缺省區域。 通常,它將只是使用環境中的區域設置並且把它們應用與初始化的數據庫。 我們可以為數據庫聲明不同的區域;有關這些的更多信息可以在 Section 20.1 中找到。 在特定數據庫集群裡的排序順序是由 initdb 設置的, 而且以後就不能更改了,除非轉儲所有數據,重新運行initdb, 並重新裝載數據。因此在這個階段做決定很有必要。