点击上方蓝色“冰河技术”,关注并选择“设为星标”

持之以恒,贵在坚持,每天进步一点点!

作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:

https://github.com/sunshinelyz/mykit-delay

PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码。

写在前面

今天,一位哥们打电话来问我说误操作了他们公司数据库中的数据,如何恢复。他原本的想法是登录数据库update一个记录,结果忘了加where条件,于是悲剧发生了。今天,我们不讲如何恢复误操作的数据(后面专门讲如何恢复误删除的数据),我们讲讲如何从源头上避免这样的问题,这才是避免类似问题的根本措施。

如果文章对你有所帮助,请不要吝惜你的点赞、在看、留言和转发,你的支持是我持续创作的最大动力!

在mysql命令加上选项-U后,当发出没有WHERE或LIMIT关键字的UPDATE或DELETE时,MySQL程序就会拒绝执行。那么,我们基于MySQL提供的这项设置,就可以轻松实现如何最大程度防止人为误操作MySQL数据库了。什么?你不信?不信我们就从MySQL的帮助说明说起,一起来看看如何基于MySQL的-u选项实现如何最大程度防止人为误操作MySQL数据库。

MySQL帮助说明

[root@binghe~]# mysql --help|grep dummy      -U, --i-am-a-dummy Synonym for option --safe-updates, -U.
i-am-a-dummy      FALSE

在mysql命令加上选项-U后,当发出没有WHERE或LIMIT关键字的UPDATE或DELETE时,MySQL程序就会拒绝执行。

指定-U登录测试

[root@binghe~]# mysql -uroot -proot -S /data/3306/mysql.sock -U
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.24-log MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> delete from oldboy.student;
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
mysql> quit
Bye

提示:不加条件无法删除,目的达到。

指定别名

我们可以将操作MySQL的命令做成别名,防止他人和DBA误操作数据库,将操作MySQL的命令做成别名也非常简单,这里,我们直接上示例了,如下所示。

[root@binghe~]# alias mysql='mysql -U'
[root@binghe~]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.7.24-log MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> delete from oldboy.student;
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
mysql> delete from oldboy.student where Sno=5;
Query OK, 1 row affected (0.02 sec)
mysql> quit
Bye

在命令行会话设置alias mysql='mysql -U'之后,只能在当前会话有效,关闭当前连接服务器的命令行之后,会话失效,则别名设置也会随之失效。如果想关闭连接服务器的会话终端,别名设置仍然有效,或者多个会话都能够使用这个别名来操作数据库,则我们可以将设置别名的命令添加到/etc/profile系统环境变量中,如下所示。

[root@binghe~]# echo "alias mysql='mysql -U'" >>/etc/profile
[root@binghe~]# . /etc/profile
[root@binghe~]# tail -1 /etc/profile
alias mysql='mysql -U'

这样,当我们退出当前连接服务器的会话终端,MySQL的别名设置依然有效,每次连接服务器时,不必在当前会话中重新设置MySQL的命令别名,直接使用即可。

总结

在mysql命令加上选项-U后,当发出没有WHERE或LIMIT关键字的UPDATE或DELETE时,MySQL程序拒绝执行。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

【MySQL】如何最大程度防止人为误操作MySQL数据库?这次我懂了!!相关推荐

  1. 防止人为误操作MySQL数据库技巧一例

    防止人为误操作MySQL数据库技巧一例 (本题来自老男孩培训内部学生问题,属于数据库安全技巧) 在若干年前,老男孩亲自遇到一个"命案",老大登录数据库update一个记录,结果忘了 ...

  2. mysql怎么防止误操作_MySQL数据库防止人为误操作的实例讲解

    有不少开发人员在操作MySQL数据库的时候都遇到过误操作的情况,例如更新数据库的时候update语句忘记加上where条件,就会造成极为悲剧的结果.本文就针对防止MySQL数据库误操作的方法做出如下详 ...

  3. mysql回滚用法_Mysql误操作后利用binlog2sql快速回滚的方法详解

    前言 在日常工作或者学习中,操作数据库时候难免会因为"大意"而误操作,需要快速恢复的话通过备份来恢复是不太可能的,下面这篇文章主要给大家介绍关于Mysql误操作后利用binlog2 ...

  4. mysql mgr bug_Mysql MGR架构误操作引发的问题处理

    [背景介绍] 故障方描述:一次用户刷权限的时候不小心把数据库用户表记录删掉了,执行之后发现不对后重建用户,杀掉进程后重新MGR启动报错. [报错信息] 2018-06-13T12:47:41.4055 ...

  5. mysql 清除分区数据恢复_MySQL 误操作后数据恢复(update,delete忘加where条件)【转】...

    在数据库日常维护中,开发人员是最让人头痛的,很多时候都会由于SQL语句 写的有问题导致服务器出问题,导致资源耗尽.最危险的操作就是在做DML操作的时候忘加where条件,导致全表更新,这是作为运维或者 ...

  6. mac上mysql关闭不了了_python操作mysql数据库

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: ...

  7. nodejs操作mysql创建库和表_Nodejs操作MySQL数据库

    如何用nodejs操作MySql数据呢,其实写法还是简单的, 1.开始在你的node项目中 npm install mysql --save 2.在你的新建项目中 引入代码 //引入数据库 var m ...

  8. mysqlclient==1.3.7对应mysql版本_Python通过MySQLdb访问操作MySQL数据库

    前言 Python支持通过多种方式访问MySQL数据库.可能有些刚入门的朋友们对Python访问MySQL数据库还不是很熟悉,故计划对Python访问MySQL数据库的这几种方式分别作一介绍. 系列第 ...

  9. mysql驱动_python3 接口测试数据驱动之操作mysql数据库

    python3 接口测试数据驱动之操作mysql数据库 1.1 操作mysql数据库 1.1.1 python3操作mysql介绍 操作数据库是程序员常用的技能之一,mysql数据库是中小型项目的首选 ...

最新文章

  1. 联发科有没有高端处理器_OPPO Reno5系列发布:联发科的高端梦实现了?
  2. 镜像浏览器_Docker 企业级私有镜像仓库 Harbor 部署
  3. Matlab图形用户界面编程初级入门
  4. 牛客网 【每日一题】4月23日题目精讲 边的染色
  5. 前端学习(2789):改进导航栏并跳转
  6. LeetCode 1028. 从先序遍历还原二叉树(栈)
  7. 互联网晚报 | 2月8日 星期二 | 上海微电子交付中国首台光刻机;广东诞生全国首个万亿工业强区;东芝宣布分拆为两家公司...
  8. cpu和memory性能监控
  9. wordpress仿uehtml设计作品分享主题模板
  10. Kendo Web UI Grid里时间格式转换
  11. 住170平以上的大平层大户型什么感觉?
  12. 最简单的视音频播放示例6:OpenGL播放YUV420P(通过Texture,使用Shader)
  13. 基于Cocos2d-x开发guardCarrot--8 《保卫萝卜2》关卡选择场景开发
  14. 沫沫金:EasyUI 固定列
  15. Catia CAA二次开发视频教程+源代码+PDF教程
  16. 逃出你的肖申克(五):看不见的牢笼(上)
  17. Docker Swarm secrets
  18. bat使用命令解析-详细(转)
  19. HDU - 7047 - Link with Balls ( 插板法 + 组合数 )
  20. 背景图片的精灵图的使用

热门文章

  1. 使用jQuery Treeview插件实现树状结构效果
  2. flash 绘图API:绘制弧线
  3. 避免某个子窗体重复运行的方法(showdialog、show)
  4. slam 常用数据集的帧率
  5. 关于pragma pack的用法(一)
  6. 德鲁克的《卓有成效的管理者》
  7. 关于问题vxworks与linux区别
  8. 静止的单摄像机无法得到像点的三维坐标详解
  9. SDM For Face Alignment 流程介绍及Matlab代码实现之预处理篇
  10. java compile_java中的CompileAPI入门及使用