DOKK / manpages / debian 10 / manpages-zh / initdb.1.zh_TW
INITDB(1) PostgreSQL Server Applications INITDB(1)

initdb - 創建一個新的 PostgreSQL數據庫集羣

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

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。


這個選項聲明數據庫集羣應該存放在哪個目錄。 這是initdb需要的唯一信息,但是你可以通過設置 PGDATA 環境變量來避免鍵入, 這樣做可能方便一些,因爲稍後數據庫服務器(postmaster)可以通過同一個變量找到數據庫目錄。

選擇模板數據庫的編碼方式。這將是你以後創建的數據庫的缺省編碼方式, 除非你創建數據庫時覆蓋了它。 缺省是 SQL_ASCII。

爲數據庫集羣設置缺省的區域。如果沒有聲明這個選項,那麼區域 是從 initdb 運行的環境中繼承過來的。

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

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

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


其他不常用的參數還有:


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

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

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


聲明數據庫集羣存儲的目錄;可以用 -D 選項覆蓋。

postgres(1), postmaster(1)

譯者

Postgresql 中文網站 何偉平 <laser@pgsqldb.org>

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

2003-11-02 Application