您好,登錄后才能下訂單哦!
這篇文章主要介紹“PostgreSQL有哪些不能做的foolish操作”,在日常操作中,相信很多人在PostgreSQL有哪些不能做的foolish操作問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PostgreSQL有哪些不能做的foolish操作”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
工作時間長了,可能就會總結出來一些東西,千萬不能做,做了會讓你后悔莫及。
先說一些我們的前提
1 擁有數據庫的所有權限
2 不能通過故意的方式來毀掉一個數據庫 例如 rm -rf
那我們就開始列一列那些操作會讓你追悔莫及
1 刪除pg_class
對系統表不敬,大部分數據庫都有自己的系統表,而這些表中存儲著非常重要的信息,postgresql 中的 pg_catalog 中的pg_class 算是一個核心的表。
我們看看清空他怎么樣
truncate table pg_catalog.pg_class;
即使你擁有初始的最大的權限,PG 的核心表,你也是沒有權利去刪除他的。
但如果你換了一種方法
然后你退出,在psql 連入到postgresql中你會發現,不OK了
pg_class 是PG中最重要的系統表之一,其中存儲著所有的系統的表中的object 的信息,OID信息,將他delete 后,基本上pg 無法在提供正常的服務,甚至是連入到PG中。
2 對系統文件的誤刪除
在很多數據庫中都有關鍵的控制文件,清理了配置控制文件的后果也是可以讓你記憶深刻。下面我們刪除PG中的 pg_control
此時我們建立一個新的數據庫,就失敗了
具體這樣的操作的失敗的原因,是檢查點的位置保存在文件pg_control中。因此,在恢復開始時,服務器首先讀取pg_control,讀取檢查點記錄,通過從檢查點記錄中指定的日志位置向前掃描來執行重做操作。所以在刪除了pg_control后,首先檢查點的checkpoint的工作就無法進行下去了。整體的數據庫系統就無法繼續工作,導致系統崩潰。
那如果刪除了pg_control 后還能讓PG重新啟動嗎?,可以但結果可能并不是你要的,即使你使用pg_resetwal 恢復了pg_control 數據庫可以啟動后,但很可能你得到得的結果是
所以pg_control 是你不能丟失的控制文件。
3 清理你的模板數據庫
模板數據庫,意思即使你創建其他數據庫的基礎,例如里面已經加載的擴展信息,或者你往里面添加的任何數據庫,表,或者存儲過程 ,觸發器等元素,都會在你 create database 后從模板數據庫中帶過來。
當然有人說,你刪不掉 template1 template0 兩個數據庫,因為刪除的時候回報,他們是模板數據庫,不能刪除。
上圖就是刪除了模板數據庫,然后在創建數據庫的時候,就....... failed.
4 設置權限的時候 pg_hba.conf, 如下圖設置
舉例我們設置一個賬號
則最低的保障是需要系統在非主機登陸時,提供賬號密碼的驗證,由于上面pg_hba的設置,導致任何人在任何時候,不使用任何密碼都可以登陸到數據庫中。
數據庫的安全蕩然無存。
5 寫 CTE 時使用recursive 時進行類似死循環的遞歸活動,造成語句最后失敗,并造成系統資源異常消耗。
這樣的語句會造成
1系統資源嚴重消耗
2 系統的TEMP 庫瘋狂的使用,很可能會造成你的temp 庫占用大量的磁盤空間
3 造成客戶端連接被 KILL
到此,關于“PostgreSQL有哪些不能做的foolish操作”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。