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