在MySQL中阻止UPDATE, DELETE 语句的执行,在没有添加WHERE条件

2019-03-13 09:45:26

sql_safe_updates 貌似就能禁止删除和更新操作

如果在生产环境中使用UPDATE,DELETE语句操作数据,此时如果忘记携带本应该添加的WHERE条件,后果可能不堪设想。在正常的业务情况,也不会更新或者删除所有的记录


1. 阻止update设置(sql_safe_updates)


sql_safe_updates这个MySQL自带的参数就可以完美的解决我们的问题,并且该参数是可以在线变更的哦~当该参数开启的情况下,你必须要在UPDATE语句后携带WHERE条件,否则就会报出ERROR。。


# sql_safe_updates=0,即未开启

root@127.0.0.1 : test 07:58:34> set sql_safe_updates=0;

Query OK, 0 rows affected (0.00 sec)

 

root@127.0.0.1 : test 07:58:43> show variables like 'sql_safe_updates';

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| sql_safe_updates | OFF   |

+------------------+-------+

1 row in set (0.00 sec)

 

# sql_safe_updates=1,即开启

root@127.0.0.1 : test 08:00:00> set sql_safe_updates=1;

Query OK, 0 rows affected (0.00 sec)

 

root@127.0.0.1 : test 08:00:11> show variables like 'sql_safe_updates';

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| sql_safe_updates | ON    |

+------------------+-------+

1 row in set (0.00 sec)

root@127.0.0.1 : test 08:00:27> update t set aaa='aaa';

ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

如上属的例子所示,当参数sql_safe_updates开启的时候,UPDATE语句不携带WHERE条件将会爆出一个错误。




2. 阻止delete设置


直接限制mysql删除

启动MySQL的时候加上参数 -U

-U, --safe-updates  Only allow UPDATE and DELETE that uses keys.

他的作用是防止执行delete的时候没带有条件语句,如果没加上where则语句不执行。

--------------------- 

作者:shgh_2004 

来源:CSDN 

原文:https://blog.csdn.net/shgh_2004/article/details/53150276 

版权声明:本文为博主原创文章,转载请附上博文链接!


  • 2019-02-25 10:05:41

    Android Socket连接(模拟心跳包,断线重连,发送数据等)

    因为是要保证全局只能有一个连接,而且我们还需要在不同的Activity中发指令,因此肯定不能在需要发指令的界面中都去连接socket,这样一来不好管理,性能也不好,重复代码也会比较多,所以想了一下还是把socket放到service中比较好,发指令功能都放在service中即可。

  • 2019-02-28 15:54:24

    HTTP协议缓存策略深入详解之ETAG妙用

      HTTP协议规格说明定义ETag为“被请求变量的实体值” 。另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端。

  • 2019-02-28 16:46:26

    android获取视频、图片时添加防盗链

    使用HTTP协议时,可以利用头信息中的Referer做防盗链。 我们在一些网站的网页里访问图片的时候,在图片本站是可以正常看到的,但在外头就不能看到了,这是因为在http的header信息中的referer元素。

  • 2019-03-02 11:29:17

    MySQL学习之索引顺序

    这个问题比较简单,MySQL本身会对条件和索引进行判断,这样写可以用到索引,没有问题。

  • 2019-03-06 11:24:19

    MySQL查看数据库表容量大小

    本文介绍MySQL查看数据库表容量大小的命令语句,提供完整查询语句及实例,方便大家学习使用。