漫畫 | 如何教女朋友“刪庫跑路”?
在 DBA 圈子有這樣一個(gè)段子:

最近幾年,經(jīng)常會出現(xiàn)各種刪庫跑路的事件發(fā)生,前幾天還有報(bào)道說思科離職5個(gè)月的程序員,為了報(bào)復(fù)公司,刪虛擬機(jī)跑路了。
這位思科的離職員工,僅憑一己之力,刪掉了思科 456 臺虛擬機(jī),導(dǎo)致思科損失 240 萬美元,相當(dāng)于人民幣 1650 萬。
對于這些事件,程序員之所以會刪庫跑路無外乎兩個(gè)原因,第一種可能是真的手誤;那第二種可能就是蓄謀的了。



怎么刪庫的?
所謂"刪庫跑路"其實(shí)只是一種戲謔的說法,而其中的"刪庫"具體做法可能是刪除了服務(wù)器上面的文件、清空了數(shù)據(jù)庫里面的內(nèi)容、刪除了數(shù)據(jù)庫表等。
刪除不同的數(shù)據(jù),使用的方式也不盡相同。
①刪除服務(wù)器文件
Linux 服務(wù)器的文件刪除主要是 rm 命令,rm 命令可以刪除一個(gè)目錄中的一個(gè)或多個(gè)文件或目錄,也可以將某個(gè)目錄及其下屬的所有文件及其子目錄均刪除掉。
在 Linux 上,使用 rm 命令要格外小心。因?yàn)橐坏﹦h除了一個(gè)文件,就無法再恢復(fù)它。
rm 命令的語法是 rm [選項(xiàng)][參數(shù)],所以,在使用 rm 的時(shí)候,一定要高度注意[選項(xiàng)][參數(shù)]的正確性。
其中選項(xiàng)比較危險(xiǎn)的有:
- -f:強(qiáng)制刪除文件或目錄;
- -r或-R:遞歸處理,將指定目錄下的所有文件與子目錄一并處理;
這兩個(gè)是比較危險(xiǎn)的,可能會造成非預(yù)期的無法挽回的后果。
另外,參數(shù)也值得注意,有的人習(xí)慣使用 rm * 來刪除文件,這其實(shí)是非常危險(xiǎn)的,因?yàn)?代表所有文件,這就很容誤刪。
最危險(xiǎn)的就是在服務(wù)器上執(zhí)行:rm -rf *,當(dāng)然,比這更更更更更危險(xiǎn)的是:sudo rm -rf /。

特別聲明☞:本圖內(nèi)容不要相信,否則后果自負(fù)!
②刪除數(shù)據(jù)庫
除了刪除服務(wù)器上面的文件外,也有些案例是刪除了數(shù)據(jù)庫。這里的刪除數(shù)據(jù)庫包括了數(shù)據(jù)庫以及表的刪除。
Dorp :drop 屬于數(shù)據(jù)庫定義語言 DDL,表示刪除表, 也可以用來刪除數(shù)據(jù)庫,刪除表格中的索引。
使用 drop 刪除表的語法是:drop table 表名,刪除數(shù)據(jù)庫的語法是:drop database 數(shù)據(jù)庫名。
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 的時(shí)候可以全部刪除,也可以按條件刪除:
- 使用 delete 刪除表中全部數(shù)據(jù):delete from 表名。
- 使用 delete 按條件刪除 :delete from 表名 where 條件。

如何避免誤刪?
首先,對于操作者來說,最重要就是在進(jìn)行刪除操作的時(shí)候,一定要加倍小心,仔細(xì)檢查確認(rèn)無誤后再執(zhí)行。
對于公司管理者來說,更好的手段就是做好權(quán)限管控,將不該授予的權(quán)限全部回收,避免有人誤操作或者惡意操作。
還有一點(diǎn)至關(guān)重要,那就是及時(shí)備份!!!冷備、熱備雙管齊下!!!
最后,奉勸廣大程序員、DBA、運(yùn)維工程師們,莫要沖動(dòng),刪庫跑路一時(shí)爽,入獄坐牢菊花癢。
來源:漫話編程,是一個(gè)通過漫畫+音頻的形式講解枯燥的編程知識的公眾號。致力于讓編程變得更有樂趣。