mysql如何能有效防止删库跑路


Posted in MySQL onOctober 05, 2021

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

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

安全模式设置

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

show variables like 'sql_safe_updates';

mysql如何能有效防止删库跑路

默认是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语句必须满足如下条件之一才能执行成功

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

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

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

到此这篇关于mysql如何能有效防止删库跑路的文章就介绍到这了,更多相关mysql 防止删库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
mysql升级到5.7时,wordpress导数据报错1067的问题
May 27 MySQL
mysql备份策略的实现(全量备份+增量备份)
Jul 07 MySQL
MySQL里面的子查询的基本使用
Aug 02 MySQL
MySQL子查询中order by不生效问题的解决方法
Aug 02 MySQL
Mysql8.0递归查询的简单用法示例
Aug 04 MySQL
mysql中int(3)和int(10)的数值范围是否相同
Oct 16 MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 MySQL
MySQL 数据类型详情
Nov 11 MySQL
Nebula Graph解决风控业务实践
Mar 31 MySQL
mysql 乱码 字符集latin1转UTF8
Apr 19 MySQL
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 MySQL
浅谈MySQL表空间回收的正确姿势
浅谈MySQL函数
Oct 05 #MySQL
Mysql binlog日志文件过大的解决
Oct 05 #MySQL
MySQL修炼之联结与集合浅析
MySQL分库分表详情
MySQL空间数据存储及函数
Sep 25 #MySQL
MySQL基础快速入门知识总结(附思维导图)
You might like
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
Extjs学习笔记之九 数据模型(上)
2010/01/11 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
javascript window.opener的用法分析
2010/04/07 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
python threading模块操作多线程介绍
2015/04/08 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
python3.6使用urllib完成下载的实例
2018/12/19 Python
Python装饰器用法实例分析
2019/01/14 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
python字典与json转换的方法总结
2020/12/28 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
Internet体系结构
2014/12/21 面试题
建筑总经理岗位职责
2014/02/02 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
个人安全承诺书
2014/05/22 职场文书
教师聘用意向书
2015/05/11 职场文书
董事长新年致辞
2015/07/29 职场文书