initdb

Name

initdb -- 建立一個新的 PostgreSQL資料庫集群

Synopsis

initdb [option...] --pgdata | -D directory

描述

initdb 建立一個新的 PostgreSQL 資料庫集群。 一個資料庫集群是由單個伺服器實例管理的資料庫集合。

建立資料庫系統包括建立資料庫資料的宿主目錄, 生成共享的系統資料表(不屬於任何特定資料庫的資料表)和建立 template1 資料庫。當您以後再建立一個新資料庫時, template1 資料庫裡所有內容都會拷貝過來。 它包括填充了象內建類型這樣的系統資料表。

initdb 初始化該資料庫集群的預設區域和字元集編碼。 有些區域範疇對該集群而言是全生命期固定的,使用 CPOSIX 之外的區域還會有性能影響。因此在執行 initdb 的時候選取正確的是非常重要的。 其它區域範疇可以在伺服器啟動之後的時間裡改變。 initdb 將把那些區域設置寫到 postgresql.conf 配置文件,這樣它們就是預設的, 但是我們可以透過編輯那些文件來修改它們。 要設置 initdb 使用的區域,參閱 --locale 選項的描述。字元集編碼可以在資料庫建立的時候獨立設置。 initdb 決定 template1 資料庫的編碼,而該編碼將成為所有其它資料庫的預設。 要修改預設編碼,我們可以使用 --encoding 選項。

initdb必須以執行資料庫伺服器進程的用戶身份執行它。 因為伺服器需要能夠訪問 initdb 建立的文件和目錄。 因為伺服器不能以 root 身份執行,所以您也不能以 root 身份執行 initdb。(實際上它拒絕以 root 身份執行。)

儘管initdb會嘗試建立相應的資料目錄, 但經常會發生它沒有權限做這些事情的情況。因為所需要的目錄的父目錄通常是 root 所有的目錄。 要為此安排做一個設置,用 root 建立一個空資料目錄, 然後用 chown 把該目錄的所有權交給資料庫用戶帳號, 然後 su 成資料庫用戶,最後以資料庫用戶身份執行 initdb

選項

-A authmethod
--auth=authmethod

這個選項聲明本地用戶在 pg_hba.conf 裡面使用的認證方法。 除非您相信所有您的系統上的本地用戶,否則不要使用 trustTrust 是所有安裝的預設。

-D directory
--pgdata=directory

這個選項聲明資料庫集群應該存放在哪個目錄。 這是initdb需要的唯一訊息,但是您可以透過設置 PGDATA 環境變量來避免鍵入, 這樣做可能方便一些,因為稍後資料庫伺服器(postmaster)可以透過同一個變量找到資料庫目錄。

-E encoding
--encoding=encoding

選擇模板資料庫的編碼方式。這將是您以後建立的資料庫的預設編碼方式, 除非您建立資料庫時覆蓋了它。預設是從區域設置中獲得的,如果沒有區域設置,就是 SQL_ASCIIPostgreSQL 伺服器支援的字元集在 Section 20.2.1 裡描述。

--locale=locale

為資料庫集群設置預設的區域。如果沒有聲明這個選項,那麼區域 是從 initdb 執行的環境中繼承過來的。 區域設置在 Section 20.1 裡描述。

--lc-collate=locale
--lc-ctype=locale
--lc-messages=locale
--lc-monetary=locale
--lc-numeric=locale
--lc-time=locale

類似 --locale,但是只設置特殊範疇的區域。

-U username
--username=username

選擇資料庫超級用戶的用戶名。 預設是執行 initdb 的用戶的有效用戶。 超級用戶的名字是什麼並不重要, 但是我們可以選擇習慣的名字 postgres,即使操作系統的用戶名字不一樣也無所謂。

-W
--pwprompt

initdb 提示輸入資料庫超級用戶的指令。 如果您不準備使用指令認證,這個東西並不重要。 否則您將不能使用指令認證直到您設置了指令。

--pwfile=filename

initdb 從一個文件裡讀取資料庫超級用戶的指令。 該文件的第一行將被當作指令使用。

其他不常用的參數還有:

-d
--debug

從初始化後端打印調試輸出以及一些其它的一些普通用戶不太感興趣的訊息。 初始化後端是 initdb 用於建立系統資料表的程序。 這個選項生成大量非常煩人的輸出。

-L directory

告訴 initdb 到哪裡找初始化資料庫所需要的輸入文件。 通常是不必要的。如果需要您明確聲明的話,程序會提示您輸入。

-n
--noclean

預設時,當initdb 發現一些錯誤妨礙它完成建立資料庫集群的工作時, 它將在檢測到不能結束工作之前將其建立的所有文件刪除。 這個選項禁止任何清理動作,因而對調試很有用。

環境

PGDATA

聲明資料庫集群儲存的目錄;可以用 -D 選項覆蓋。

又見

postgres, postmaster