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