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單使用者模式部署手冊模式
- 如何進入linux單使用者模式Linux模式
- 單使用者模式下修改root密碼模式密碼
- linux 單使用者模式修改密碼Linux模式密碼
- GRUB引導進單使用者模式的三種方式模式
- PostgreSQL:使用者角色管理SQL
- postgresql使用者安全配置SQL
- RHEL 7單使用者模式密碼恢復模式密碼
- PostgreSQL:模式匹配操作符SQL模式
- postgresql 簡單入門SQL
- PostgreSQL學習手冊(模式Schema)SQL模式
- [譯]PostgreSQL中更安全的應用使用者SQL
- 簡單介紹PostgreSQL解析URL的方法SQL
- 單使用者模式下mount -o remount, rw / 有大用途模式REM
- SQL Server資料庫設為單一使用者模式SQLServer資料庫模式
- PostgreSQL中的模式匹配和正規表示式 - DasSQL模式
- 使用者,使用者賬戶,模式和模式物件模式物件
- 單使用者模式下 /etc/fstab檔案不能修改的解決辦法模式
- Mac下PostgreSQL的安裝與簡單使用MacSQL
- PostgreSQL電商小需求-湊單商品的篩選SQL
- JS中的單例模式及單例模式原型類的實現JS單例模式原型
- DCL單例模式中的缺陷及單例模式的其他實現單例模式
- 淺談PostgreSQL使用者許可權SQL
- 應用最廣的模式——單例模式模式單例
- 我的Java設計模式-單例模式Java設計模式單例
- LINUX忘記ROOT使用者密碼處理方法(linux單使用者模式)Linux密碼模式
- 【Solaris】Solaris10作業系統 單使用者模式破解root使用者密碼作業系統模式密碼
- 您的單例模式,真的單例嗎?單例模式
- Flutter 中的單例模式Flutter單例模式
- Flutter(able) 的單例模式Flutter單例模式
- 單例模式的實現單例模式
- javascript單例模式的理解JavaScript單例模式
- Boost中的單利模式模式
- 單例模式static的困惑單例模式
- 策略模式+單例模式+簡單工廠模式:推送服務模式單例
- linux系統進入single單使用者維護模式Linux模式