【开发经验】mysql有效防止删库跑路!
文章目录
- 安全模式设置
- 测试
- 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
语句必须满足如下条件之一才能执行成功
- 使用where子句,并且where子句中列必须为prefix索引列
- 使用limit
- 同时使用where子句和limit(此时where子句中列可以不是索引列)
delete
语句必须满足如下条件之一才能执行成功
- 使用where子句,并且where子句中列必须为prefix索引列
- 同时使用where子句和limit(此时where子句中列可以不是索引列)
一才能执行成功。
【开发经验】mysql有效防止删库跑路!相关推荐
- binlog日志_【删库跑路】使用Binlog日志恢复误删的MySQL数据
前言 "删库跑路"是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路! 开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文, ...
- 京东到家程序员删库跑路 ! 讲一讲 MySQL 数据备份杀手锏 binlog
我们都知道,数据非常重要 网上也经常看到一些段子,某公司程序员对工作不满,删库跑路,老板损失惨重,欲哭无泪.这不最近又爆出一例,京东到家程序员离职当天删库跑路! 那么有没有什么解决方案? 即使数据库真 ...
- 【删库跑路】使用Binlog日志恢复误删的MySQL数据
前言 "删库跑路"是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路! 开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文, ...
- 关闭删库跑路的后门,打造高可用的MySQL
0 MySQL HA/Scalability 如何关上"删库跑路"的后门,维护我们的数据安全呢? 数据是当今Web,移动,社交,企业和云应用程序的流行货币.确保数据始终可用是任何组 ...
- mysql data目录 清空_Mysql binlog备份数据及恢复数据,学会这个,我在也不怕删库跑路啦~...
导读 我一直都主张,技多不压身(没有学不会的技术,只有不学习的人),多学一项技能,未来就少求人一次.网上经常听到xxx删库跑路,万一真的遇到了,相信通过今天的学习,也能将数据再恢复回来~~~ 介绍 记 ...
- 数据库周刊54丨2020 年度报告:PingCAP、腾讯云数据库、人大金仓、GoldenDB ;CPU 100% SQL优化案例;Mysql内存溢出处理;避免删库跑路黑天鹅……
热门资讯 [1.PingCAP 2020 年度报告|相信开放的力量 [摘要]本文为PingCAP 2020年度报告.盘点了PingCAP里程碑大事件:完成D轮2.7亿美元融资,创造全球数据库历史新的里 ...
- 阿里十年DBA经验产品经理:真的不要再有一起删库跑路事件了
最近网上又出一起删库跑路事件,本不想过多写此类事件文字,但从业13年,十年DBA工作经验,职业素养还是驱使自己写点内容,以期能够帮助广大企业客户. 本文主要以数据库产品从业者角度,介绍帮助企业减少意外 ...
- 同事删库跑路后,我连表名都不能修改了?
事情是这样的,前几天隔壁部门的哥们在生产环境的数据库上,执行了一下drop命令,好嘛,活生生的删库跑路的例子居然真的在我身边发生了,好在运维同学给力,后来恢复了数据.事后听说这哥们虽然没被开除,但也吃 ...
- 几万年前,有一只猴子大闹地府后删库跑路...
话说几万年前,有一只猴子在大闹地府删库跑路,导致地府几百年没缓过劲儿来...... 在知乎上冒出这么一个问题:"孙悟空无姓无名的时候,阎王生死簿是怎么写的呢?" 生死薄技术上如何实 ...
- 真实版“删库跑路”?程序员蓄意破坏线上生产环境!
作者 | 阿文 责编 | 伍杏玲 出品 | 程序人生(ID:coder_life) 作为程序员经常相互开玩笑说,公司要是把我逼急了,大不了我们"删库跑路",这是一句玩笑话,没想到会 ...
最新文章
- istringstream ostringstream stringstream
- ”该证书已被签发机构吊销“错误解决方案
- mysql子查询教行子查询_MySQL中列子查询与行子查询操作的学习教程
- json2.js参考
- HDU 2841 Visible Trees
- laravel mysql增删改查_Laravel框架数据库操作的增删改三种方式 阿星小栈
- antdesignvue upload vue3个人笔记待更新
- 企业日志分析 五大问题需重点注意
- java开发环境搭建--写给java新手
- Linux Cpu 利用率计算
- mac 安装mysql怎么卸载不干净_CleanMyMac卸载不干净怎么办?如何彻底删除Mac上的CleanMyMac?...
- Docker学习一:Docker简介与安装
- Jquery 实现动态添加输入框编号
- 为何数据视觉化越来越火
- 可视化工具Netron介绍
- 数字签名和数字证书的区别与联系
- 电脑如何远程控制挂机宝?影云挂机宝
- 数据仓库之搭建ODS(原始数据层)
- Causality Inspired Representation Learning for Domain Generalization 阅读笔记
- AdamW优化器简单理解