漫話:如何給女朋友解釋什么是刪庫跑路?
在DBA圈子有這樣一個段子:
最近幾年,經(jīng)常會出現(xiàn)各種刪庫跑路的事件發(fā)生,前幾天還有報道說思科離職5個月的程序員,為了報復(fù)公司,刪虛擬機跑路了。
這位思科的離職員工,僅憑一己之力,刪掉了思科 456 臺虛擬機,導(dǎo)致思科損失 240 萬美元,相當(dāng)于人民幣 1650 萬。
對于這些事件,程序員之所以會刪庫跑路無外乎兩個原因,第一種可能是真的手誤;那第二種可能就是蓄謀的了。
怎么刪庫的?
所謂"刪庫跑路"其實只是一種戲謔的說法,而其中的"刪庫"具體做法可能是刪除了服務(wù)器上面的文件、清空了數(shù)據(jù)庫里面的內(nèi)容、刪除了數(shù)據(jù)庫表等。
刪除不同的數(shù)據(jù),使用的方式也不盡相同。
刪除服務(wù)器文件
Linux服務(wù)器的文件刪除主要是rm命令,rm命令可以刪除一個目錄中的一個或多個文件或目錄,也可以將某個目錄及其下屬的所有文件及其子目錄均刪除掉。
在Linux上,使用rm命令要格外小心。因為一旦刪除了一個文件,就無法再恢復(fù)它。
rm 命令的語法是rm [選項][參數(shù)]
所以,在使用rm的時候,一定要高度注意[選項][參數(shù)]的正確性。
其中選項比較危險的有:
- -f:強制刪除文件或目錄;
- -r或-R:遞歸處理,將指定目錄下的所有文件與子目錄一并處理;
這兩個是比較危險的,可能會造成非預(yù)期的無法挽回的后果。
另外,參數(shù)也值得注意,有的人習(xí)慣使用rm * 來刪除文件,這其實是非常危險的,因為*代表所有文件,這就很容誤刪。
最危險的就是在服務(wù)器上執(zhí)行:rm -rf *,當(dāng)然,比這更更更更更危險的是:sudo rm -rf /
 特別聲明:本圖內(nèi)容不要相信,否則后果自負!
刪除數(shù)據(jù)庫
除了刪除服務(wù)器上面的文件外,也有些案例是刪除了數(shù)據(jù)庫。
這里的刪除數(shù)據(jù)庫包括了數(shù)據(jù)庫以及表的刪除。
1、dorp ,drop 屬于數(shù)據(jù)庫定義語言DDL,表示刪除表, 也可以用來刪除數(shù)據(jù)庫,刪除表格中的索引。
使用drop刪除表的語法是:drop table 表名
刪除數(shù)據(jù)庫的語法是:drop database 數(shù)據(jù)庫名
2、truncate, truncate 屬于數(shù)據(jù)庫定義語言DDL,表示刪除表中所有數(shù)據(jù),DDL操作是隱性提交的!不能rollback
使用truncate刪除表的語法是:truncate from 表名
特別要注意的是:使用truncate 刪除的數(shù)據(jù)是不能恢復(fù)的。
清空表內(nèi)容
除了對數(shù)據(jù)庫和表結(jié)構(gòu)的操作以外,還有一種破壞的方式就是清空數(shù)據(jù)庫中的內(nèi)容。
通常使用delte語句,delete 屬于數(shù)據(jù)庫操縱語言DML,表示刪除表中的數(shù)據(jù),
delete刪除過程是每次從表中刪除一行,并把該行刪除操作作為事務(wù)記錄在日志中保存。
使用delete的時候可以全部刪除,也可以按條件刪除。
使用delete刪除表中全部數(shù)據(jù):delete from 表名
使用delete按條件刪除 :delete from 表名 where 條件
如何避免誤刪
首先,對于操作者來說,最重要就是在進行刪除操作的時候,一定要加倍小心,仔細檢查確認無誤后再執(zhí)行。
對于公司管理者來說,更好的手段就是做好權(quán)限管控,將不該授予的權(quán)限全部回收,避免有人誤操作或者惡意操作。
還有一點至關(guān)重要,那就是及時備份!!!冷備、熱備雙管齊下!!!
最后,奉勸廣大程序員、DBA、運維工程師們,莫要沖動,刪庫跑路一時爽,入獄坐牢菊花癢。
關(guān)于作者:漫話編程,是一個通過漫畫+音頻的形式講解枯燥的編程知識的公眾號。致力于讓編程變得更有樂趣。
本文轉(zhuǎn)載自微信公眾號「漫話編程」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系漫話編程公眾號。