文章目录

  • 安全模式设置
  • 测试
    • 1.无where的update和delete
    • 2、非索引键的delete
    • 3.索引键的delete
  • 总结

大家肯定听说过,有些开发者由于个人失误,在delete或者update语句的时候没有添加where语句,导致整个表数据错乱。

mysql安全模式:mysql发现delete、update语句没有添加where或者limit条件时会报错。整个sql将无法执行,有效防止了误删表的情况。

安全模式设置

在mysql中通过如下命令查看状态:

 show variables like 'sql_safe_updates';

默认是OFF状态,将状态设置为ON即可:

  • set sql_safe_updates=1; //打开
  • set sql_safe_updates=0; //关闭

设置为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

总结

如果设置了sql_safe_updates=1,那么update语句必须满足如下条件之一才能执行成功

  1. 使用where子句,并且where子句中列必须为prefix索引列
  2. 使用limit
  3. 同时使用where子句和limit(此时where子句中列可以不是索引列)

delete语句必须满足如下条件之一才能执行成功

  1. 使用where子句,并且where子句中列必须为prefix索引列
  2. 同时使用where子句和limit(此时where子句中列可以不是索引列)
    一才能执行成功。

【开发经验】mysql有效防止删库跑路!相关推荐

  1. binlog日志_【删库跑路】使用Binlog日志恢复误删的MySQL数据

    前言 "删库跑路"是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路! 开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文, ...

  2. 京东到家程序员删库跑路 ! 讲一讲 MySQL 数据备份杀手锏 binlog

    我们都知道,数据非常重要 网上也经常看到一些段子,某公司程序员对工作不满,删库跑路,老板损失惨重,欲哭无泪.这不最近又爆出一例,京东到家程序员离职当天删库跑路! 那么有没有什么解决方案? 即使数据库真 ...

  3. 【删库跑路】使用Binlog日志恢复误删的MySQL数据

    前言 "删库跑路"是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路! 开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文, ...

  4. 关闭删库跑路的后门,打造高可用的MySQL

    0 MySQL HA/Scalability 如何关上"删库跑路"的后门,维护我们的数据安全呢? 数据是当今Web,移动,社交,企业和云应用程序的流行货币.确保数据始终可用是任何组 ...

  5. mysql data目录 清空_Mysql binlog备份数据及恢复数据,学会这个,我在也不怕删库跑路啦~...

    导读 我一直都主张,技多不压身(没有学不会的技术,只有不学习的人),多学一项技能,未来就少求人一次.网上经常听到xxx删库跑路,万一真的遇到了,相信通过今天的学习,也能将数据再恢复回来~~~ 介绍 记 ...

  6. 数据库周刊54丨2020 年度报告:PingCAP、腾讯云数据库、人大金仓、GoldenDB ;CPU 100% SQL优化案例;Mysql内存溢出处理;避免删库跑路黑天鹅……

    热门资讯 [1.PingCAP 2020 年度报告|相信开放的力量 [摘要]本文为PingCAP 2020年度报告.盘点了PingCAP里程碑大事件:完成D轮2.7亿美元融资,创造全球数据库历史新的里 ...

  7. 阿里十年DBA经验产品经理:真的不要再有一起删库跑路事件了

    最近网上又出一起删库跑路事件,本不想过多写此类事件文字,但从业13年,十年DBA工作经验,职业素养还是驱使自己写点内容,以期能够帮助广大企业客户. 本文主要以数据库产品从业者角度,介绍帮助企业减少意外 ...

  8. 同事删库跑路后,我连表名都不能修改了?

    事情是这样的,前几天隔壁部门的哥们在生产环境的数据库上,执行了一下drop命令,好嘛,活生生的删库跑路的例子居然真的在我身边发生了,好在运维同学给力,后来恢复了数据.事后听说这哥们虽然没被开除,但也吃 ...

  9. 几万年前,有一只猴子大闹地府后删库跑路...

    话说几万年前,有一只猴子在大闹地府删库跑路,导致地府几百年没缓过劲儿来...... 在知乎上冒出这么一个问题:"孙悟空无姓无名的时候,阎王生死簿是怎么写的呢?" 生死薄技术上如何实 ...

  10. 真实版“删库跑路”?程序员蓄意破坏线上生产环境!

    作者 | 阿文 责编 | 伍杏玲 出品 | 程序人生(ID:coder_life) 作为程序员经常相互开玩笑说,公司要是把我逼急了,大不了我们"删库跑路",这是一句玩笑话,没想到会 ...

最新文章

  1. istringstream ostringstream stringstream
  2. ”该证书已被签发机构吊销“错误解决方案
  3. mysql子查询教行子查询_MySQL中列子查询与行子查询操作的学习教程
  4. json2.js参考
  5. HDU 2841 Visible Trees
  6. laravel mysql增删改查_Laravel框架数据库操作的增删改三种方式 阿星小栈
  7. antdesignvue upload vue3个人笔记待更新
  8. 企业日志分析 五大问题需重点注意
  9. java开发环境搭建--写给java新手
  10. Linux Cpu 利用率计算
  11. mac 安装mysql怎么卸载不干净_CleanMyMac卸载不干净怎么办?如何彻底删除Mac上的CleanMyMac?...
  12. Docker学习一:Docker简介与安装
  13. Jquery 实现动态添加输入框编号
  14. 为何数据视觉化越来越火
  15. 可视化工具Netron介绍
  16. 数字签名和数字证书的区别与联系
  17. 电脑如何远程控制挂机宝?影云挂机宝
  18. 数据仓库之搭建ODS(原始数据层)
  19. Causality Inspired Representation Learning for Domain Generalization 阅读笔记
  20. AdamW优化器简单理解

热门文章

  1. python学习笔记--缓解眼睛疲劳的小工具
  2. java基于springboot的ktv点歌管理系统附源码
  3. 【Android】在有menu键的手机上显示ActionBar上的Menu键
  4. Meltdown Attack
  5. 内网信息收集小知识(一)
  6. 《云知声黄伟:未来谁能成为 AI 领域的 BAT ?》笔记
  7. SF20 | 来聊聊平仓离场的方法,如何构建高效,灵活,可靠的出场策略?
  8. 聊聊这个倾注10年的开源CRM项目,如何一步步火爆GitHub!
  9. vue对vue-giant-tree进行节点操作
  10. 【半年时光-追寻你的足迹】