怎么在postgresql中使用initdb進行初始化?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
initdb 官網
initdb創建了一個新的PostgreSQL數據庫集群。數據庫集群是由單個服務器實例管理的數據庫集合。
創建數據庫集群包括數據庫所在的目錄、生成共享目錄表(屬于整個集群而不是任何特定數據庫的表)以及創建template1和postgres數據庫。稍后創建新數據庫時,將復制template1數據庫中的所有內容(因此,template1中安裝的任何內容都會自動復制到以后創建的每個數據庫中。),postgres數據庫是供用戶、實例程序和第三方應用程序使用的默認數據庫。
盡管initdb將嘗試創建指定的數據目錄,但如果所需數據目錄的父目錄是根目錄,則它可能沒有權限。要再這樣的設置中初始化,需要創建一個空數據目錄作為根目錄,然后使用chown將目錄的所有權分配給數據庫用戶賬戶,然后su成為運行initdb的數據庫用戶。
initdb必須作為擁有服務器進程的用戶運行,因為服務器需要訪問initdb創建的文件和目錄。由于服務器不能作為root用戶運行,所以也不能作為root用戶運行initdb。
出于安全原因,在默認情況下,initdb創建的新集群只能由集群所有者訪問?!猘llow-group-access選項允許與集群所有者屬于同一組的任何用戶讀取集群中的文件。這對于作為非特權用戶執行備份非常有用。
initdb初始化數據庫集群的默認語言環境和字符集編碼。在創建數據庫時,可以分別設置字符集編碼、排序順序(LC_COLLATE)和字符集類(LC_CTYPE,例如upper、lower、digit)。initdb確定template1數據庫的那些設置,這些設置將作為所有其他數據庫的默認設置。
要更改默認的排序順序或字符集類,請使用——lc-collate和——lc-ctype選項。除了C或POSIX之外的排序順序也會造成性能損失。由于這些原因,在運行initdb時選擇正確的語言環境是很重要的。
其余的語言環境類別可以在服務器啟動后更改。還可以使用——locale設置所有語言環境類別的默認值,包括排序順序和字符集類。所有服務器語言環境值(lc_*)都可以通過SHOW All來顯示。
-D directory/--pgdata=directory
此選項指定應該存儲數據庫集群的目錄。必傳。也可以設置環境變量PGDATA來替換-D選項。
-U username/--username=username
選擇數據庫superuser的用戶名。這默認為運行initdb的用戶的名稱。
-E encoding/--encoding=encoding
選擇模板數據庫的編碼。這也是您稍后創建的任何數據庫的默認編碼,
--lc-collate/--lc-ctype
更改默認的排序順序或字符集類。
-k/--data-checksums
在數據頁上使用校驗和來幫助檢測I/O系統的損壞,否則系統將是靜默的。啟用校驗和可能會導致顯著的性能損失。如果設置,則計算所有數據庫中所有對象的校驗和。所有校驗和失敗將在pg_stat_database視圖中報告。
su - pguser001 -c "/u01/pgsql/bin/initdb --username=pguser001 --encoding=UTF8 --lc-collate=C --lc-ctype=en_US. utf8 --data-checksums -D /data"
注:如果數據目錄已經存在且初始化了的話,initdb將不會運行。
補充:postgresql 初始化 initdb 出現No such file or directory
FATAL: could not open extension control file "/opt/HighGo/Develop/share/postgresql/extension/file_fdw.control": No such file or directory.
如下:
me@me:/opt/HighGo/Develop/bin$ <span >./initdb -D ../data -W</span>
The files belonging to this database system will be owned by user "me". This user must also own the server process. The database cluster will be initialized with locale "en_US.UTF-8". The default database encoding has accordingly been set to "UTF8". The default text search configuration will be set to "english". creating directory ../data ... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 32MB creating configuration files ... ok creating template1 database in ../data/base/1 ... ok initializing pg_authid ... ok Enter new systemuser password: Enter it again: Enter syssao password: Enter it again: Enter syssso password: Enter it again: setting dba password ... ok initializing dependencies ... ok <span >creating system views ... FATAL: could not open extension control file "/opt/HighGo/Develop/share/postgresql/extension/file_fdw.control": No such file or directory STATEMENT: /*</span> * PostgreSQL System Views * * Copyright (c) 1996-2012, PostgreSQL Global Development Group * * src/backend/catalog/system_views.sql
原因是file_fdw.control插件沒有安裝.進入源代碼目錄下的contrib目錄下.找到file_fdw文件進入其中,編譯安裝,
make make install
同理出現:
creating system views ... FATAL: could not open extension control file "/opt/HighGo/Develop/share/postgresql/extension/dblink.control": No such file or directory.
在contrib目錄下進入到dblink文件中,make,make install
所以如果出現一些其他的hstore.control 等.相應的安裝上.
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。