如果在生产环境中使用UPDATE,DELETE语句操作数据,此时如果忘记携带本应该添加的WHERE条件,后果可能不堪设想。在正常的业务情况,也不会更新或者删除所有的记录
1. 阻止update设置(sql_safe_updates
)
sql_safe_updates
这个MySQL自带的参数就可以完美的解决我们的问题,并且该参数是可以在线变更的哦~当该参数开启的情况下,你必须要在UPDATE语句后携带WHERE条件,否则就会报出ERROR。。
sql_safe_updates=0
,即未开启
$ set sql_safe_updates=0;
Query OK, 0 rows affected (0.00 sec)
$ show variables like 'sql_safe_updates'
Variable_name Value
sql_safe_updates OFF
如上属的例子所示,当参数sql_safe_updates
开启的时候,UPDATE语句不携带WHERE条件将会爆出一个错误。
2. 阻止delete设置
直接限制mysql
删除
启动MySQL
的时候加上参数 -U
-U, --safe-updates Only allow UPDATE and DELETE that uses keys.
他的作用是防止执行delete
的时候没带有条件语句,如果没加上where
则语句不执行。