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 分页查询的优化技巧
May 12 MySQL
mysql 8.0.24 安装配置方法图文教程
May 12 MySQL
MySQL表字段时间设置默认值
May 13 MySQL
MySQL删除和插入数据很慢的问题解决
Jun 03 MySQL
MySQL快速插入一亿测试数据
Jun 23 MySQL
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
Jun 26 MySQL
mysql优化之query_cache_limit参数说明
Jul 01 MySQL
mysql定时自动备份数据库的方法步骤
Jul 07 MySQL
浅谈MySQL函数
Oct 05 MySQL
mysql分表之后如何平滑上线详解
Nov 01 MySQL
MySQL悲观锁与乐观锁的实现方案
Nov 02 MySQL
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
Sep 23 MySQL
浅谈MySQL表空间回收的正确姿势
浅谈MySQL函数
Oct 05 #MySQL
Mysql binlog日志文件过大的解决
Oct 05 #MySQL
MySQL修炼之联结与集合浅析
MySQL分库分表详情
MySQL空间数据存储及函数
Sep 25 #MySQL
MySQL基础快速入门知识总结(附思维导图)
You might like
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
angularjs基础教程
2014/12/25 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
angularjs实现简单的购物车功能
2017/09/21 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
Python 面向对象 成员的访问约束
2008/12/23 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
详解python中sort排序使用
2019/03/23 Python
python装饰器使用实例详解
2019/12/14 Python
Python实现Keras搭建神经网络训练分类模型教程
2020/06/12 Python
python如何删除文件、目录
2020/06/23 Python
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
印度民族服装购物网站:BIBA
2019/08/05 全球购物
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
理财投资建议书
2014/03/12 职场文书
采购意向书范本
2014/03/31 职场文书
企业形象策划方案
2014/05/29 职场文书
小学数学课题方案
2014/06/15 职场文书
2015年社区工会工作总结
2015/05/26 职场文书