作者个人研发在高并发场景下提供了一个简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。开源半年多以来,已成功为十几家中小企业提供精准定时调度解决方案,经受住了生产环境的考验。为了造福更多的童鞋,这里放上开源框架的地址:https://github.com/sunshinelyz/mykit-delay写的比较早今天有个哥们给我打电话,问我是不是把他们公司的数据处理错了数据库,如何恢复。他本来的想法是登录数据库更新一条记录,但是忘了加上where条件,于是悲剧发生了。今天先不说误删数据怎么恢复(后面会专门说误删数据怎么恢复),而是说说如何从源头上避免此类问题的发生,这是避免类似问题的根本措施.如果文章对您有帮助,欢迎点赞、观看、留言转发。您的支持是我不断创作的最大动力!在mysql命令中加入选项-U后,当没有WHERE或LIMIT关键字UPDATE或DELETE时,MySQL程序将拒绝执行。那么,基于MySQL提供的设置,我们就可以轻松实现如何最大程度地防止人为误操作MySQL数据库。什么?你不相信吗?不信,我们先从MySQL的帮助说明开始,看看如何基于MySQL实现-u选项,最大程度防止人为误操作MySQL数据库。MySQL帮助说明[root@binghe~]#mysql--help|grepdummy-U,--i-am-a-dummySynonymforoption--safe-updates,-U.i-am-a-dummyFALSEmysql命令添加选项-U最后,当在没有WHERE或LIMIT关键字的情况下发出UPDATE或DELETE时,MySQL程序将拒绝执行。指定-U登录测试[root@binghe~]#mysql-uroot-proot-S/data/3306/mysql.sock-UWelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis14Serverversion:5.7.24-logMySQLCommunityServer(GPL)Copyright(c)2000,2018,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>deletefromoldboy.student;ERROR1175(HY000):YouareusingsafeupdatemodeandyoutriedtoupdateatablewithoutaWHEREthatusesaKEYcolumnmysql>quitBye提示:不加条件不能删除,目的就达到了。指定别名我们可以将操作MySQL的命令做成别名,以防止其他人和DBA误操作数据库。把操作MySQL的命令做成别名也很简单。这里,我们直接举个例子,如下图。[root@binghe~]#aliasmysql='mysql-U'[root@binghe~]#mysql-uroot-poldboy123-S/data/3306/mysql.sockWelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis15Serverversion:5.7.24-logMySQLCommunityServer(GPL)Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>deletefromoldboy.student;ERROR1175(HY000):YouareusingsafeupdatemodeandyoutriedtoupdateatablewithoutaWHEREthatusesaKEYcolumnmysql>deletefromoldboy.studentwhereSno=5;QueryOK,1rowaffected(0.02sec)mysql>quitBye在命令行会话中设置aliasmysql='mysql-U'后,只能在当前会话中有效。关闭当前连接服务器的命令行后,会话失效,别名设置也会失效。如果要关闭连接服务器的会话终端,别名设置仍然有效,或者多个会话可以使用这个别名操作数据库,那么我们可以在/etc/profile系统环境中添加设置别名的命令变量,如下图。[root@binghe~]#echo"aliasmysql='mysql-U'">>/etc/profile[root@binghe~]#./etc/profile[root@binghe~]#tail-1/etc/profilealiasmysql='mysql-U'这样,当我们退出当前连接服务器的会话终端时,MySQL别名设置仍然有效。每次连接服务器时,不需要在当前会话中重新设置MySQL命令别名,直接使用即可。小结mysql命令加上选项-U后,当发出不带WHERE或LIMIT关键字的UPDATE或DELETE时,MySQL程序拒绝执行。本文转载自微信公众号“冰河科技”,可通过以下二维码关注。转载本文请联系冰川科技公众号。
