PostgreSQL7.0手冊-用戶手冊-21. 系統(tǒng)應用 - initdb
2019-09-08 23:33:27
供稿:網(wǎng)友
第二十一章. 系統(tǒng)應用
內容
initdb - 創(chuàng)建一個新的 Postgres 數(shù)據(jù)庫安裝
initlocation - 創(chuàng)建一個從屬的 Postgres 數(shù)據(jù)庫存儲區(qū)
ipcclean - 為退出的后端設置共享內存和信號燈
pg_passwd - 管理平面口令文件
pg_upgrade - 允許不重新裝載數(shù)據(jù)從前面版本升級
postgres - 運行一個 Postgres 單用戶后端
postmaster - 運行 Postgres 多用戶后端
這些是 Postgres 的服務器和支持的工具的索引信息。
initdb
名稱
initdb ― 創(chuàng)建一個新的 PostgreSQL 數(shù)據(jù)庫節(jié)點
語法
initdb [ --pgdata|-D dbdir ]
[ --sysid|-i sysid ]
[ --pwprompt|-W ]
[ --encoding|-E encoding ]
[ --pglib|-L libdir ]
[ --noclean | -n ] [ --debug | -d ] [ --template | -t ]
輸入
--pgdata=dbdir, -D dbdir, PGDATA
這個選項聲明數(shù)據(jù)庫應該存放在文件系統(tǒng)的哪個位置。這是 initdb 需要的唯一信息,但是你可以通過設置 PGDATA 環(huán)境變量來避免鍵入,這樣做可能方便一些,因為稍后數(shù)據(jù)庫服務器(postmaster)可以通過同一個變量找到數(shù)據(jù)庫目錄?!?
--sysid=sysid, -i sysid
選擇數(shù)據(jù)庫超級用戶的系統(tǒng)標識(system id)。缺省是運行 initdb 的用戶的有效用戶標識(user id)。超級用戶的系統(tǒng)標識是什么并不重要,但是我們可以選擇從象 0 或 1 這樣的數(shù)字開始?!?
--pwprompt, -W
令 initdb 提示輸入數(shù)據(jù)庫超級用戶的口令。如果你不準備使用口令認證,這個東西并不重要。否則你將不能使用口令認證直到你設置了口令?!?
--encoding=encoding, -E encoding
選擇模板數(shù)據(jù)庫的多字節(jié)編碼方式。這將是你以后創(chuàng)建的數(shù)據(jù)庫的缺省編碼方式,除非你創(chuàng)建數(shù)據(jù)庫時覆蓋了它。要使用多字節(jié)編碼特性,你必須在制作的時候聲明,那時你還要為這個選項選擇缺省值?!?
其他不常用的參數(shù)還有:
--pglib=libdir, -l libdir
initdb 需要幾個輸入文件初始化數(shù)據(jù)庫。這個選項告訴它到哪里能找到這些文件。通常你不必擔心這些,因為 initdb 知道最常見的安裝布局而且能夠自己找到這些文件。如果需要你顯式聲明這些文件的路徑的話,你會被告之的。如出現(xiàn)這種情況,有一個文件叫 global1.bki.source,并且它通常和其他文件一起安裝到庫目錄里(例如, /usr/local/pgsql/lib)。
--template, -t
在不改變其他任何東西的前提下替換現(xiàn)存數(shù)據(jù)庫系統(tǒng)中的 template1 數(shù)據(jù)庫.當你需要使用initdb 從一個新的 PostgreSQL 版本中升級你的template1 數(shù)據(jù)庫或者你的 template1 數(shù)據(jù)庫因為一些系統(tǒng)問題崩潰了時非常有用通常 template1 的內容在整個數(shù)據(jù)庫系統(tǒng)的生存周期中保持一致.你帶 --template 參數(shù)運行 initdb 不能破壞任何數(shù)據(jù).
--noclean, -n
缺省時,當 initdb 發(fā)現(xiàn)一些錯誤妨礙它完成創(chuàng)建數(shù)據(jù)庫系統(tǒng)的工作時,它將在檢測到不能結束工作之前將其創(chuàng)建的所有文件刪除.這個選項禁止任何清理動作,因而對調試很有用.
--debug, -d
打印初始后端上的調試輸出和一些其他普通用戶不太感興趣的信息。初始后端是 initdb 用于創(chuàng)建目錄表的進程.這個選項生成一大堆輸出.
輸出
initdb 將在聲明的數(shù)據(jù)區(qū)里創(chuàng)建完成安裝所需的系統(tǒng)表文件和框架文件。
描述
initdb 創(chuàng)建一個新的 PostgreSQL 數(shù)據(jù)庫系統(tǒng).一個數(shù)據(jù)庫系統(tǒng)是由一個Unix 用戶配置的并由單個 postmaster 管理的數(shù)據(jù)庫集合.
創(chuàng)建數(shù)據(jù)庫系統(tǒng)包括創(chuàng)建數(shù)據(jù)庫數(shù)據(jù)的宿主目錄,生成共享的系統(tǒng)表(不屬于任何特定數(shù)據(jù)庫的表)和創(chuàng)建 template1 數(shù)據(jù)庫.當你創(chuàng)建一個數(shù)據(jù)庫時,template1 數(shù)據(jù)庫里所有內容都會拷貝過來。它包括填充了象內建類型這樣的系統(tǒng)表.
你決不能以 root 身份運行 initdb。這是因為你也不能以 root 身份運行數(shù)據(jù)庫服務器,但是服務器需要能夠訪問initdb 創(chuàng)建的文件。還有,在初始化階段,還沒有安裝用戶和訪問控制,postgres 將只是用當前的 Unix 用戶名進行聯(lián)接,所以你必須以擁有服務器進程的帳號登錄。
盡管 initdb 會嘗試創(chuàng)建相應的數(shù)據(jù)目錄,還是有可能發(fā)生它沒有權限做這些事情的情況。因此在運行initdb 前創(chuàng)建數(shù)據(jù)目錄并且把所有權賦予數(shù)據(jù)庫超級用戶是一個很好的習慣。