NAME

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

SYNOPSIS

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

DESCRIPTION 描述

initdb 建立一個新的 PostgreSQL 資料庫叢集。 一個數據庫叢集是由單個伺服器例項管理的資料庫集合。

建立資料庫系統包括建立資料庫資料的宿主目錄, 生成共享的系統表(不屬於任何特定資料庫的表)和建立 template1 資料庫。當你以後再建立一個新資料庫時, template1 資料庫裡所有內容都會複製過來。 它包括填充了象內建型別這樣的系統表。
initdb 初始化該資料庫叢集的預設區域和字符集編碼。 有些區域範疇對該叢集而言是全生命期固定的,因此在執行 initdb 的時候選取正確的是非常重要的。 其它區域範疇可以在伺服器啟動之後的時間裡改變。 initdb 將把那些區域設定寫到 postgresql.conf 配置檔案,這樣它們就是預設的, 但是我們可以透過編輯那些檔案來修改它們。 要設定 initdb 使用的區域,參閱 --locale 選項的描述。字符集編碼可以在資料庫建立的時候獨立設定。 initdb 決定 template1 資料庫的編碼,而該編碼將成為所有其它資料庫的預設。 要修改預設編碼,我們可以使用 --encoding 選項。
initdb 必須以執行資料庫伺服器程序的使用者身份執行它。 因為伺服器需要能夠訪問 initdb 建立的檔案和目錄。 因為伺服器不能以 root 身份執行,所以你也不能以 root 身份執行 initdb。(實際上它拒絕以 root 身份執行。)

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

OPTIONS 選項

-D directory
--pgdata=directory

這個選項宣告資料庫叢集應該存放在哪個目錄。 這是initdb需要的唯一資訊,但是你可以透過設定 PGDATA 環境變數來避免鍵入, 這樣做可能方便一些,因為稍後資料庫伺服器(postmaster)可以透過同一個變數找到資料庫目錄。
-E encoding
--encoding=encoding

選擇模板資料庫的編碼方式。這將是你以後建立的資料庫的預設編碼方式, 除非你建立資料庫時覆蓋了它。 預設是 SQL_ASCII。
--locale=locale

為資料庫叢集設定預設的區域。如果沒有宣告這個選項,那麼區域 是從 initdb 執行的環境中繼承過來的。
--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 提示輸入資料庫超級使用者的口令。 如果你不準備使用口令認證,這個東西並不重要。 否則你將不能使用口令認證直到你設定了口令。

其他不常用的引數還有:
-d
--debug

從初始化後端列印除錯輸出以及一些其它的一些普通使用者不太感興趣的資訊。 初始化後端是 initdb 用於建立系統表的程式。 這個選項生成大量非常煩人的輸出。
-L directory

告訴 initdb 到哪裡找初始化資料庫所需要的輸入檔案。 通常是不必要的。如果需要你明確宣告的話,程式會提示你輸入。
-n
--noclean

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

ENVIRONMENT 環境

PGDATA

宣告資料庫叢集儲存的目錄;可以用 -D 選項覆蓋。

SEE ALSO 參見

postgres(1), postmaster(1)
 

譯者

Postgresql 中文網站 何偉平 <[email protected]>

本頁面中文版由中文 man 手冊頁計劃提供。
 
中文 man 手冊頁計劃: https://github.com/man-pages-zh/manpages-zh

Recommended readings

Pages related to initdb you should read also: