DataBase - MySQL安全模式

MySQL中sql_safe_updates安全模式

概念与场景

不论新手还是老手在使用mysql中一般都会有批量操作数据的需求,假设在安全模式关闭的情况下,我们update和delete没有加入where条件,那么我们就会失手将全部数据修改或删除(这个后果不亚于删库跑路了~),故为了防止这种情况,在使用数据库时通常都会加入安全模式

常见场景

在update操作中

  1. 当where条件中列(column)没有索引可用且无limit限制时会拒绝更新
  2. where条件为常量且无limit限制时会拒绝更新

在delete操作中

  1. where条件为常量
  2. where条件为空
  3. where条件中 列(column)没有索引可用且无limit限制时拒绝删除
安全模式Sql语句
  • 查看当前安全模式状态
show variables like'sql_safe_updates';

MySQL输出效果
在这里插入图片描述
Value : ON 开启
Value :OFF 关闭

  • 设置安全模式状态

打开安全模式状态

set sql_safe_updates=1;

关闭安全模式状态

set sql_safe_updates=0; 

借鉴部分

  • 借鉴总结

安全模式部分
如果设置了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的安全模式:sql_safe_updates介绍

猜你喜欢

转载自blog.csdn.net/qq_20451879/article/details/103995448
今日推荐