mysql如何能有效防止刪庫(kù)跑路
大家肯定聽說過,有些開發(fā)者由于個(gè)人失誤,在delete或者update語句的時(shí)候沒有添加where語句,導(dǎo)致整個(gè)表數(shù)據(jù)錯(cuò)亂。
mysql安全模式:mysql發(fā)現(xiàn)delete、update語句沒有添加where或者limit條件時(shí)會(huì)報(bào)錯(cuò)。整個(gè)sql將無法執(zhí)行,有效防止了誤刪表的情況。
安全模式設(shè)置
在mysql中通過如下命令查看狀態(tài):
show variables like 'sql_safe_updates';
默認(rèn)是OFF狀態(tài),將狀態(tài)設(shè)置為ON即可:
set sql_safe_updates=1;
//打開set sql_safe_updates=0;
//關(guān)閉
設(shè)置為ON之后
- update語句:where條件中列(column)沒有索引可用且無limit限制時(shí)會(huì)拒絕更新。where條件為常量且無limit限制時(shí)會(huì)拒絕更新。
- delete語句: ①where條件為常量,②或where條件為空,③或where條件中 列(column)沒有索引可用且無limit限制時(shí)拒絕刪除。
測(cè)試
打開安全模式進(jìn)行測(cè)試
1.無where的update和delete
delete from t_user
delete from t_user > 1175 - You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column > 時(shí)間: 0.001s
update t_user set name='123'
update t_user set name='123' > 1175 - You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column > 時(shí)間: 0.001s
2、非索引鍵的delete
delete from t_user where name='123'
delete from t_user where name='123' > 1175 - You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column > 時(shí)間: 0.007s
如果delete的where條件不是索引鍵,則必須要添加limit才可以。
delete from t_user where name='123' limit 1
delete from t_user where name='123' limit 1 > Affected rows: 0 > 時(shí)間: 0.002s
3.索引鍵的delete
delete from t_user where group_id='123'
delete from t_user where group_id='123' > Affected rows: 0 > 時(shí)間: 0s
總結(jié)
如果設(shè)置了sql_safe_updates=1
,那么update
語句必須滿足如下條件之一才能執(zhí)行成功
- 使用where子句,并且where子句中列必須為prefix索引列
- 使用limit
- 同時(shí)使用where子句和limit(此時(shí)where子句中列可以不是索引列)
delete
語句必須滿足如下條件之一才能執(zhí)行成功
- 使用where子句,并且where子句中列必須為prefix索引列
- 同時(shí)使用where子句和limit(此時(shí)where子句中列可以不是索引列)一才能執(zhí)行成功。
到此這篇關(guān)于mysql如何能有效防止刪庫(kù)跑路的文章就介紹到這了,更多相關(guān)mysql 防止刪庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql出現(xiàn)問題:error?while?loading?shared?libraries:?libaio解
這篇文章主要介紹了Mysql出現(xiàn)問題:error?while?loading?shared?libraries:?libaio解決方案的相關(guān)資料,需要的朋友可以參考下2022-10-10MySQL調(diào)優(yōu)之索引在什么情況下會(huì)失效詳解
索引的失效,會(huì)大大降低sql的執(zhí)行效率,日常中又有哪些常見的情況會(huì)導(dǎo)致索引失效?下面這篇文章主要給大家介紹了關(guān)于MySQL調(diào)優(yōu)之索引在什么情況下會(huì)失效的相關(guān)資料,需要的朋友可以參考下2022-10-10mysql創(chuàng)建表設(shè)置表主鍵id從1開始自增的解決方案
在MySQL中用很多類型的自增ID,每個(gè)自增ID都設(shè)置了初始值,一般情況下初始值都是從0開始,然后按照一定的步長(zhǎng)增加(一般是自增 1),下面這篇文章主要給大家介紹了關(guān)于mysql創(chuàng)建表設(shè)置表主鍵id從1開始自增的解決方案,需要的朋友可以參考下2023-04-04MySQL中隱式轉(zhuǎn)換的踩坑記錄以及解決方法分享
這篇文章主要和大家分享一個(gè)MySQL隱式轉(zhuǎn)換時(shí)踩過的坑,差點(diǎn)把服務(wù)器整崩潰了,以及最后的解決辦法。文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-11-11mysql修改數(shù)據(jù)庫(kù)默認(rèn)路徑無法啟動(dòng)問題的解決
這篇文章主要給大家介紹了關(guān)于mysql修改數(shù)據(jù)庫(kù)默認(rèn)路徑無法啟動(dòng)問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11