PostgreSQL的單使用者模式
postgres能在單使用者模式中被呼叫。這種模式的主要用途是在啟動過程中由initdb使用。有時候它也被用於除錯或者災難性恢復。
注意,執行一個單使用者模式伺服器並不真地適合除錯伺服器,因為不會發生實際的程式間通訊和鎖定。當從 shell 中呼叫單使用者模式時,使用者可以輸入查詢並且結果會被以一種更適合開發者閱讀(不適合普通使用者)的形式列印在螢幕上。
在單使用者模式中,會話使用者將被設定為 ID 為 1 的使用者,並且這個使用者會被隱式地賦予超級使用者許可權。
該使用者不必實際存在,因此單使用者模式執行可以被用來對某些意外損壞的系統目錄進行手工恢復。
單使用者模式需要在資料庫關閉狀態使用
如下為一個例子在不能登入資料庫的狀況下,透過單使用者進入手動恢復
[postgres@localhost ~]$ pg_ctl stop -D /opt/data6000/ waiting for server to shut down.... done server stopped [postgres@localhost ~]$ postgres --single -D /opt/data6000 --ignore_system_indexes=on --enable_indexscan=off --enable_bitmapscan=off postgres PostgreSQL stand-alone backend 12.1 backend> reindex database postgres; [postgres@localhg_ctl start -D /opt/data6000/ waiting for server to start....2021-09-27 22:58:31.119 CST [7978] LOG: starting PostgreSQL 12.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit 2021-09-27 22:58:31.119 CST [7978] LOG: listening on IPv6 address "::1", port 6000 2021-09-27 22:58:31.119 CST [7978] LOG: listening on IPv4 address "127.0.0.1", port 6000 2021-09-27 22:58:31.120 CST [7978] LOG: listening on Unix socket "/tmp/.s.PGSQL.6000" 2021-09-27 22:58:31.128 CST [7979] LOG: database system was shut down at 2021-09-27 22:58:24 CST 2021-09-27 22:58:31.129 CST [7978] LOG: database system is ready to accept connections done server started ------------------------------------ --ignore_system_indexes=on 讀取系統表時忽略系統索引(但是修改系統表時依然同時更新索引)。這在從被破壞的系統索引中恢復資料的時有用。 用於單使用者模式的選項 --enable_indexscan=off 不允許或禁止查詢規劃器使用索引掃描計劃型別 --enable_bitmapscan=off 關閉規劃器對點陣圖掃描規劃型別的使用
下面的選項僅適用於單使用者模式。
--single 選擇單使用者模式。這必須是命令列中的第一個選項。 database 指定要訪問的資料庫的名稱。這必須是命令列中的最後一個引數。如果省略它,則預設為使用者名稱。 -E 在執行命令之前回顯所有命令到標準輸出。 -j 使用跟著兩個新行的分號而不是僅用新行作為命令終止符。 -r filename 將所有伺服器日誌輸出傳送到filename中。 只有在作為一個命令列選項提供時,這個選項才會兌現。
要啟動一個單使用者模式的伺服器,使用這樣的命令
postgres --single -D /usr/local/pgsql/data other-options my_database
用-D給伺服器提供正確的資料庫目錄的路徑,或者確保環境變數PGDATA被設定。同時還要指定你想在其中工作的特定資料庫的名字。
通常,單使用者模式的伺服器會把換行符當做命令輸入的終止符。它不明白分號的作用,因為那屬於psql。要想把一個命令分成多行,必須在最後一個換行符以外的每個換行符前面敲一個反斜線。這個反斜線和旁邊的新行都會被從輸入命令中去掉。注意即使在字串或者註釋中也會這樣做。
但是如果使用了-j命令列選項,那麼單個新行將不會終止命令輸入。相反,分號-新行-新行的序列才會終止命令輸入。也就是說,輸入一個緊跟著空行的分號。在這種模式下,反斜線-新行不會被特殊對待。此外,在字串或者註釋內的這類序列也不會被特殊對待。
不管在哪一種輸入模式中,如果輸入的一個分號不是正好在命令終止符之前或者不是命令終止符的一部分,它會被認為是一個命令分隔符。當真正輸入一個命令終止符時,已經輸入的多個語句將被作為一個單個事務執行。要退出會話,輸入EOF(通常是Control+D)。如果從上一個命令終止符以來已經輸入了任何文字,那麼EOF將被當作命令終止符,並且如果要退出則需要另一個EOF。注意單使用者模式的伺服器不會提供複雜的行編輯特性(例如沒有命令歷史)。但使用者模式也不會做任何後臺處理,例如自動檢查點或者複製。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2838441/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux的單使用者模式Linux模式
- CDH 5.7.1單使用者模式部署手冊模式
- PostgreSQL:使用者角色管理SQL
- 【趙渝強老師】PostgreSQL中的模式SQL模式
- PostgreSQL:模式匹配操作符SQL模式
- PostgreSQL建立只讀使用者SQL
- LINUX忘記ROOT使用者密碼處理方法(linux單使用者模式)Linux密碼模式
- postgresql 簡單入門SQL
- [譯]PostgreSQL中更安全的應用使用者SQL
- 簡單介紹PostgreSQL解析URL的方法SQL
- PostgreSQL中的模式匹配和正規表示式 - DasSQL模式
- DCL單例模式中的缺陷及單例模式的其他實現單例模式
- JS中的單例模式及單例模式原型類的實現JS單例模式原型
- 應用最廣的模式——單例模式模式單例
- Linux 系統的單使用者模式、修復模式、跨控制檯登入在系統修復中的運用Linux模式
- 淺談PostgreSQL使用者許可權SQL
- Mac下PostgreSQL的安裝與簡單使用MacSQL
- 您的單例模式,真的單例嗎?單例模式
- Flutter 中的單例模式Flutter單例模式
- Flutter(able) 的單例模式Flutter單例模式
- 『學了就忘』Linux啟動引導與修復 — 72、Linux系統的修復模式(單使用者模式)Linux模式
- 單例模式(下)---聊一聊單例模式的幾種寫法單例模式
- 單例模式(下) - 聊一聊單例模式的幾種寫法單例模式
- 單例模式(下) – 聊一聊單例模式的幾種寫法單例模式
- 簡單的使用者管理
- 設計模式-單例模式、多例模式設計模式單例
- 創造模式 單例模式模式單例
- 建立型模式:單例模式模式單例
- 設計模式(單例模式)設計模式單例
- [設計模式] 單例模式設計模式單例
- 設計模式-單例模式設計模式單例
- 設計模式 —— 單例模式設計模式單例
- 設計模式 單例模式設計模式單例
- 設計模式——單例模式設計模式單例
- 簡單的單例模式其實也不簡單單例模式
- 單利模式模式
- 單例模式單例模式
- 如何檢視postgresql使用者許可權SQL