在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程序拒绝执行。

最新文章

  1. akka优势
  2. Android学习笔记——Button
  3. Java抽象类接口、内部类题库
  4. Hadoop入门进阶课程3--Hadoop2.X64位环境搭建
  5. MySQL基础 - 编码设置
  6. BZOJ1968 [Ahoi2005]COMMON 约数研究
  7. FPGA最小系统分析与电路设计
  8. android坐标
  9. 你真的会使用SQL Server的备份还原功能吗?之一:恢复模型
  10. 从零开始学android开发-项目debug
  11. 临时设置 selinux
  12. easyui datagrid detailview嵌套datagrid的问题
  13. VS2010中xercesc配置及简单示例
  14. Linux的一些简单命令(三)
  15. 常量指针(const X*)和指针常量(X* const)
  16. 用jdk在cmd下运行编译java程序
  17. (102, "Incorrect syntax near '-'.DB-Lib error message 102, severity 15:\nGen
  18. winform 适配high dpi
  19. 在JavaWeb项目中URL中字符串加密解密方案
  20. docker swarm的常用操作

热门文章

  1. NC15665 maze
  2. windows10:vscode下go语言的适配
  3. OGC WebGIS 常用服务标准(WMS/WMTS/TMS/WFS)速查
  4. 【机器学习基础】——另一个视角解释SVM
  5. dijkstra最短路算法(堆优化)
  6. 四边形不等式优化 dp (doing)
  7. OPC UA分布式IO模块
  8. Python 实现列表与二叉树相互转换并打印二叉树封装类-详细注释+完美对齐
  9. (防坑)Alphafold 非docker 安装指南
  10. 带你徒手完成基于MindSpore的CycleGAN实现