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