W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
initdb — 創(chuàng)建一個(gè)新的PostgreSQL數(shù)據(jù)庫(kù)集簇
initdb
[option
...] [ --pgdata
| -D
] directory
initdb
創(chuàng)建一個(gè)新的PostgreSQL數(shù)據(jù)庫(kù)集簇。一個(gè)數(shù)據(jù)庫(kù)集簇是由一個(gè)單一服務(wù)器實(shí)例管理的數(shù)據(jù)庫(kù)的集合。
一個(gè)數(shù)據(jù)庫(kù)集簇的創(chuàng)建包括創(chuàng)建存放數(shù)據(jù)庫(kù)數(shù)據(jù)的目錄、生成共享目錄表(屬于整個(gè)集簇而不是任何特定數(shù)據(jù)庫(kù)的表)并且創(chuàng)建template1
和postgres
數(shù)據(jù)庫(kù)。當(dāng)你后來(lái)創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)時(shí),任何在template1
數(shù)據(jù)庫(kù)中的東西都會(huì)被復(fù)制(因此,任何已安裝在template1
中的東西都會(huì)被自動(dòng)地復(fù)制到后來(lái)創(chuàng)建的每一個(gè)數(shù)據(jù)庫(kù)中)。
postgres
數(shù)據(jù)庫(kù)是便于用戶(hù)、工具和第三方應(yīng)用使用的默認(rèn)數(shù)據(jù)庫(kù)。
盡管initdb
將嘗試創(chuàng)建指定的數(shù)據(jù)目錄,它可能沒(méi)有權(quán)限(如果想要的數(shù)據(jù)目錄的父目錄被根用戶(hù)擁有)。要在這樣一種設(shè)置中初始化,作為 root 創(chuàng)建一個(gè)空數(shù)據(jù)目錄,然后使用chown
將該目錄賦予給數(shù)據(jù)庫(kù)用戶(hù)賬戶(hù),再然后su
成為該數(shù)據(jù)庫(kù)用戶(hù)并運(yùn)行initdb
。
initdb
必須以將擁有該服務(wù)器進(jìn)程的用戶(hù)運(yùn)行,因?yàn)樵摲?wù)器需要訪(fǎng)問(wèn)initdb
創(chuàng)建的文件和目錄。因?yàn)樵摲?wù)器不能作為 root 運(yùn)行,你不能以 root 運(yùn)行initdb
(事實(shí)上它會(huì)拒絕這樣做)。
由于安全原因,由initdb
創(chuàng)建的新集簇默認(rèn)將只能由集簇?fù)碛姓咴L(fǎng)問(wèn)。--allow-group-access
選項(xiàng)允許與集簇?fù)碛姓咄M的任何用戶(hù)讀取集簇中的文件。這對(duì)非特權(quán)用戶(hù)執(zhí)行備份很有用。
initdb
初始化該數(shù)據(jù)庫(kù)集簇的默認(rèn)區(qū)域和字符集編碼。當(dāng)一個(gè)數(shù)據(jù)庫(kù)被創(chuàng)建時(shí),其字符集編碼、排序順序(LC_COLLATE
)和字符集類(lèi)(LC_CTYPE
,例如大寫(xiě)、小寫(xiě)、數(shù)字)可以被獨(dú)立設(shè)置。initdb
為template1
數(shù)據(jù)庫(kù)確定那些設(shè)置,它們將作為所有其他數(shù)據(jù)庫(kù)的默認(rèn)值。
要修改默認(rèn)排序順序或字符集類(lèi),使用--lc-collate
和--lc-ctype
選項(xiàng)。除C
或POSIX
之外的排序順序也有性能罰值。由于這些原因,在運(yùn)行initdb
時(shí)選擇正確的區(qū)域很重要。
余下的區(qū)域分類(lèi)可以在服務(wù)器啟動(dòng)之后改變。你也可以使用--locale
來(lái)為所有區(qū)域分類(lèi)設(shè)置默認(rèn)值,包括排序順序和字符集類(lèi)。所有服務(wù)器區(qū)域值(lc_*
)可以通過(guò)SHOW ALL
顯示。詳見(jiàn)第 23.1 節(jié)。
要修改默認(rèn)編碼,使用--encoding
。詳見(jiàn)第 23.3 節(jié).
-A authmethod
--auth=authmethod
這個(gè)選項(xiàng)為本地用戶(hù)指定在pg_hba.conf
中使用的默認(rèn)認(rèn)證方法(host
和local
行)。initdb
將使用指定的認(rèn)證方法為非復(fù)制連接以及復(fù)制連接填充pg_hba.conf
項(xiàng)。
除非你信任你系統(tǒng)上的所有本地用戶(hù),不要使用trust
。為了安裝方便,trust
是默認(rèn)值。
--auth-host=authmethod
這個(gè)選項(xiàng)為通過(guò) TCP/IP 連接的本地用戶(hù)指定在pg_hba.conf
中使用的認(rèn)證方法(host
行)。
--auth-local=authmethod
這個(gè)選項(xiàng)為通過(guò) Unix 域套接字連接的本地用戶(hù)指定在pg_hba.conf
中使用的認(rèn)證方法(local
行)。
-D directory
--pgdata=directory
這個(gè)選項(xiàng)指定數(shù)據(jù)庫(kù)集簇應(yīng)該存放的目錄。這是initdb
要求的唯一信息,但是你可以通過(guò)設(shè)定PGDATA
環(huán)境變量來(lái)避免書(shū)寫(xiě)它,這很方便因?yàn)橹髷?shù)據(jù)庫(kù)服務(wù)器(postgres
)可以使用同一個(gè)變量來(lái)找到數(shù)據(jù)庫(kù)目錄。
-E encoding
--encoding=encoding
選擇模板數(shù)據(jù)庫(kù)的編碼。這也將是后來(lái)創(chuàng)建的任何數(shù)據(jù)庫(kù)的默認(rèn)編碼,除非你覆蓋它。默認(rèn)值來(lái)自于區(qū)域,或者如果該值不起作用則為SQL_ASCII
。PostgreSQL服務(wù)器所支持的字符集在第 23.3.1 節(jié)中描述。
-g
--allow-group-access
允許與集簇?fù)碛姓咄M的用戶(hù)讀取initdb
創(chuàng)建的所有集簇文件。 Windows會(huì)忽略此選項(xiàng),因?yàn)樗恢С?acronym class="acronym">POSIX樣式的組權(quán)限。
-k
--data-checksums
在數(shù)據(jù)頁(yè)面上使用校驗(yàn)碼來(lái)幫助檢測(cè) I/O 系統(tǒng)造成的損壞。啟用校驗(yàn)碼將會(huì)引起顯著的性能懲罰。如果設(shè)置,則為所有對(duì)象計(jì)算校驗(yàn)和,在整個(gè)數(shù)據(jù)庫(kù)中。 所有校驗(yàn)和失敗都將報(bào)告在
pg_stat_database
視圖。
--locale=locale
為數(shù)據(jù)庫(kù)集簇設(shè)置默認(rèn)區(qū)域。如果這個(gè)選項(xiàng)沒(méi)有被指定,該區(qū)域?qū)?code class="command">initdb所運(yùn)行的環(huán)境中繼承。區(qū)域支持在第 23.1 節(jié)中描述。
--lc-collate=locale
--lc-ctype=locale
--lc-messages=locale
--lc-monetary=locale
--lc-numeric=locale
--lc-time=locale
和--locale
相似,但是只在指定的分類(lèi)中設(shè)置區(qū)域。
--no-locale
等效于--locale=C
。
-N
--no-sync
默認(rèn)情況下,initdb
將等待所有文件被安全地寫(xiě)到磁盤(pán)。這個(gè)選項(xiàng)會(huì)導(dǎo)致initdb
不等待就返回,這當(dāng)然更快,但是也意味著一次后續(xù)的操作系統(tǒng)崩潰可能讓數(shù)據(jù)目錄損壞。通常,這個(gè)選項(xiàng)對(duì)測(cè)試有用,但是不應(yīng)該在創(chuàng)建生產(chǎn)安裝時(shí)使用。
--pwfile=filename
讓initdb
從一個(gè)文件讀取數(shù)據(jù)庫(kù)超級(jí)用戶(hù)的口令。該文件的第一行被當(dāng)作口令。
-S
--sync-only
安全地把所有數(shù)據(jù)庫(kù)文件寫(xiě)入到磁盤(pán)并退出。這不會(huì)執(zhí)行任何正常的initdb操作。
-T config
--text-search-config=config
設(shè)置默認(rèn)的文本搜索配置。詳見(jiàn)default_text_search_config。
-U username
--username=username
選擇數(shù)據(jù)庫(kù)超級(jí)用戶(hù)的用戶(hù)名。這個(gè)的默認(rèn)值是實(shí)際運(yùn)行initdb
的用戶(hù)的名稱(chēng)。超級(jí)用戶(hù)的名字是什么真的不重要,但是你可以選擇保留常用的名字postgres,即使操作系統(tǒng)的用戶(hù)名不同。
-W
--pwprompt
讓initdb
提示要求為數(shù)據(jù)庫(kù)超級(jí)用戶(hù)給予一個(gè)口令。如果你沒(méi)有計(jì)劃使用口令認(rèn)證,這就不重要。否則在你設(shè)置一個(gè)口令之前你就無(wú)法使用口令認(rèn)證。
-X directory
--waldir=directory
這個(gè)選項(xiàng)指定預(yù)寫(xiě)式日志會(huì)被存儲(chǔ)在哪個(gè)目錄中。
--wal-segsize=size
設(shè)置WAL段尺寸,以兆字節(jié)為單位。這是WAL日志中每個(gè)文件的尺寸。默認(rèn)的尺寸為16兆字節(jié)。該值必須位于2的1次冪和1024次冪(兆字節(jié))之間。這個(gè)選項(xiàng)只能在初始化期間設(shè)置,并且之后不能更改。
調(diào)整這個(gè)值來(lái)控制WAL日志傳送或者歸檔可能會(huì)有用。此外,在有大量WAL的數(shù)據(jù)庫(kù)中,每個(gè)目錄中數(shù)量巨大的WAL文件可能會(huì)成為性能和管理問(wèn)題。增加WAL文件尺寸將會(huì)降低WAL文件的數(shù)量。
其他較少使用的選項(xiàng):
-d
--debug
打印來(lái)自引導(dǎo)后端的調(diào)試輸出以及普通大眾不那么感興趣的一些消息。引導(dǎo)后端被程序initdb
用來(lái)創(chuàng)建目錄表。這個(gè)選項(xiàng)會(huì)生成大量極端無(wú)聊的輸出。
-L directory
指定initdb
應(yīng)從哪里尋找它的輸入文件來(lái)初始化數(shù)據(jù)庫(kù)集簇。這通常沒(méi)有必要。如果你需要顯式指定它們的位置,你應(yīng)該被告知。
-n
--no-clean
默認(rèn)情況下,當(dāng)initdb
確定有一個(gè)錯(cuò)誤阻止它完整地創(chuàng)建數(shù)據(jù)庫(kù)集簇,它會(huì)移除在它發(fā)現(xiàn)無(wú)法完成任務(wù)之前創(chuàng)建的任何文件。這個(gè)選項(xiàng)會(huì)抑制這種整理并且對(duì)調(diào)試有用。
其他選項(xiàng):
-V
--version
打印initdb版本并退出。
-?
--help
顯示有關(guān)initdb命令行參數(shù)的幫助并退出。
PGDATA
指定數(shù)據(jù)庫(kù)集簇應(yīng)該被存放的目錄,可以使用-D
選項(xiàng)覆蓋。
PG_COLOR
規(guī)定在診斷消息中是否使用顏色。可能的值為always
、 auto
、never
。
TZ
指定創(chuàng)建的數(shù)據(jù)集簇的默認(rèn)時(shí)區(qū)。值應(yīng)該是一個(gè)完整的時(shí)區(qū)名稱(chēng)(見(jiàn)第 8.5.3 節(jié))。
和大部分其他PostgreSQL工具相似,這個(gè)工具也使用libpq(見(jiàn)第 33.14 節(jié))支持的環(huán)境變量。
initdb
可以通過(guò)pg_ctl initdb
被調(diào)用。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: