在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 

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


  • 2017-03-27 16:24:26

    laravel,gulp,Browsersync浏览器同步测试

    Browsersync能让浏览器实时、快速响应您的文件更改(html、js、css、sass、less等)并自动刷新页面。更重要的是 Browsersync可以同时在PC、平板、手机等设备下进项调试。您可以想象一下:“假设您的桌子上有pc、ipad、iphone、android等设备,同时打开了您需要调试的页面,当您使用browsersync后,您的任何一次代码保存,以上的设备都会同时显示您的改动”。无论您是前端还是后端工程师,使用它将提高您30%的工作效率。

  • 2017-03-28 09:27:41

    Java中Arrays的asList()方法

    Java中Arrays的asList()方法 可以将 数组转为List 但是,这个数组类型必须是 引用类型的,如果是8中基本数据类型就不可以 原因如下,引用别人的一篇文章:

  • 2017-03-28 10:58:01

    No such property: sonatypeRepo for class:

    这种问题一般是出现在导入一些开源项目的时候。原因为该项目的原作者会把项目发布到maven中央仓库中,所以在gradle中添加了相关的maven发布任务,而发布任务需要配置