?
Dieses Dokument verwendet PHP-Handbuch für chinesische Websites Freigeben
initdb [option...] --pgdata | -D directory
initdb創(chuàng)建一個新的PostgreSQL數(shù)據(jù)庫集群。 一個數(shù)據(jù)庫集群是由單個服務器實例管理的多個數(shù)據(jù)庫的集合。
創(chuàng)建數(shù)據(jù)庫系統(tǒng)包括創(chuàng)建數(shù)據(jù)庫數(shù)據(jù)的宿主目錄,生成共享的系統(tǒng)表(不屬于任何特定數(shù)據(jù)庫的表) 和創(chuàng)建template1和postgres數(shù)據(jù)庫。當你以后再創(chuàng)建 一個新數(shù)據(jù)庫時,template1數(shù)據(jù)庫里所有內容都會拷貝過來。因此,任何在 template1里面安裝的東西都自動拷貝到之后創(chuàng)建的數(shù)據(jù)庫中。 postgres數(shù)據(jù)庫是一個缺省數(shù)據(jù)庫,用于給用戶、工具、第三方應用提供缺 省數(shù)據(jù)庫。
盡管initdb會嘗試創(chuàng)建相應的數(shù)據(jù)目錄,但經(jīng)常會沒有權限做這件事。 因為所要創(chuàng)建目錄的父目錄通常被root所擁有。要初始化這種設置,用root創(chuàng)建一個空數(shù)據(jù)目錄, 然后用chown把該目錄的所有權交給數(shù)據(jù)庫用戶帳號,然后su 成數(shù)據(jù)庫用戶,最后以數(shù)據(jù)庫用戶身份運行initdb。
initdb必須以運行數(shù)據(jù)庫服務器的用戶身份運行,因為服務器需要訪問 initdb創(chuàng)建的目錄和文件。因為服務器通常是以非root身份運行的,因 此一般也就不以 root 用戶運行initdb。(事實上initdb 將拒絕你以root用戶運行它。)
initdb 初始化數(shù)據(jù)庫集群的默認語言環(huán)境和字符集編碼。 字符集編碼,排序順序(LC_COLLATE)和字符集類(LC_CTYPE,如: 大寫字母、小寫字母和數(shù)字)可以在創(chuàng)建時單獨對一個數(shù)據(jù)庫設置。initdb 決定對template1數(shù)據(jù)庫的設置,這將作為所有其他數(shù)據(jù)庫的默認設置。
更改默認排序順序或字符集類,要使用--lc-collate和--lc-ctype 選項。排序命令除了C或者POSIX也有性能損失。由于這些原因, 在運行initdb時選擇正確的語言環(huán)境是很重要的。
剩下的locale類可以稍后在服務器啟動時被改變。您也可以使用--locale 來為所有的locale類設置默認,包括排序順序和字符集類。所有的服務器locale值 (lc_*)可以通過SHOW ALL被顯示。 更多詳細信息敬請關注Section 22.1
為了改變默認編碼,要使用--encoding。 更多詳細信息敬請關注Section 22.2。
這個選項聲明本地用戶在pg_hba.conf里面使用的認證方法。除非你相信 所有本地用戶,否則不要使用trust(缺省)。
這個選項聲明數(shù)據(jù)庫集群應該存放在哪個目錄。這是initdb需要的 唯一信息,但是你可以通過設置PGDATA環(huán)境變量來避免鍵入,這樣做可 能方便一些,因為稍后數(shù)據(jù)庫服務器(postgres)可以通過同一個變 量找到數(shù)據(jù)庫目錄。
選擇模板數(shù)據(jù)庫的編碼方式。這將是你以后創(chuàng)建的數(shù)據(jù)庫的缺省編碼方式,除非你創(chuàng)建數(shù) 據(jù)庫時覆蓋了它。缺省是從區(qū)域設置中獲得的,如果沒有區(qū)域設置,就是 SQL_ASCII。PostgreSQL服務器支持的 字符集在節(jié)Section 22.2.1里描述。
為數(shù)據(jù)庫集群設置缺省的區(qū)域。如果沒有聲明這個選項,那么區(qū)域是從initdb 運行的環(huán)境中繼承過來的。區(qū)域設置在節(jié)Section 22.1里描述。
類似--locale,但是只設置特殊范疇的區(qū)域。
該選項指定事務日志應該被存儲的目錄。
選擇數(shù)據(jù)庫超級用戶的用戶名。缺省是運行initdb的用戶的有效用戶。 超級用戶的名字是什么并不重要,但是可以選擇習慣的名字postgres, 即使操作系統(tǒng)的用戶名字不一樣也沒關系。
令initdb提示輸入數(shù)據(jù)庫超級用戶的口令。如果你不準備使用口令認證, 這個東西并不重要。否則你將不能使用口令認證,直到你設置了口令。
令initdb從一個文件里讀取數(shù)據(jù)庫超級用戶的口令。該文件的第一行 將被當作口令使用。
其它不常用的參數(shù)還有:
從初始化后端打印調試輸出以及一些其它的一些普通用戶不太感興趣的信息。初始化后端是 initdb用于創(chuàng)建系統(tǒng)表的程序。這個選項生成大量非??菰锏妮敵觥?
告訴initdb到哪里找初始化數(shù)據(jù)庫所需要的輸入文件。通常是不必要的。 如果需要你明確聲明的話,程序會提示你輸入。
默認地,當initdb發(fā)現(xiàn)一些錯誤妨礙它完成創(chuàng)建數(shù)據(jù)庫集群的工作時, 它將在檢測到不能結束工作之前將其創(chuàng)建的所有文件刪除。這個選項禁止任何清理動作, 因而對調試很有用。
輸出initdb版本并退出。
顯示關于initdb命令行參數(shù)的幫助并退出。
聲明數(shù)據(jù)庫集群存儲的目錄;可以用-D選項覆蓋。
該應用,同大部分其他PostgreSQL應用一樣,也使用libpq 支持的環(huán)境變量(請參閱Section 31.13)。
initdb也可以通過pg_ctl initdb被調用。