`

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

阅读更多
防止人为误操作MySQL数据库技巧一例

(本题来自老男孩培训内部学生问题,属于数据库安全技巧)

在若干年前,老男孩亲自遇到一个“命案”,老大登录数据库update一个记录,结果忘了加where,于是悲剧发生了,这使得我对MySQL的增量恢复熟练度远超过其他的知识点,同时也很在意对内的数据库安全,并且每次讲课讲到此处,都会给学生讲这个领导的故事。

1、mysql帮助说明

[oldboy_c64 ~]# 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程序就会拒绝执行

2、指定-U登录测试

[oldboy_c64 ~]# mysql -uroot -poldboy123 -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.5.32-log MySQL Community Server (GPL)
Copyright (c) 2000, 2013, 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
提示:不加条件无法删除,目的达到。

3、做成别名防止老大和DBA误操作

[oldboy_c64 ~]# alias mysql='mysql -U'
[oldboy_c64 ~]# 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.5.32-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
[oldboy_c64 ~]# echo "alias mysql='mysql -U'" >>/etc/profile
[oldboy_c64 ~]# . /etc/profile
[oldboy_c64 ~]# tail -1 /etc/profile
alias mysql='mysql -U'
结论:

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

原文链接:http://oldboy.blog.51cto.com/2561410/1321061



http://www.sql8.net
分享到:
评论

相关推荐

    仓库库存管理系统数据库备份文件

    1. 数据安全:数据库备份是为了防止因硬件故障、软件错误、人为误操作或恶意攻击导致的数据丢失。仓库库存管理系统中的数据涉及到商品的入库、出库、库存量等关键信息,一旦丢失,可能造成严重的经济损失。 2. 数据...

    学生信息管理系统Swing+MySQL.zip

    本项目实践以"学生信息管理系统Swing+MySQL.zip"为例,探讨如何利用Java Swing作为前端界面,结合MySQL数据库进行后端数据存储,实现一个高效、实用的信息管理系统。 一、Java Swing基础知识 Java Swing是Java AWT...

    数据库的守护神:灾难恢复全解析

    与此同时,面对着来自不同层面的风险威胁——包括但不限于硬件故障、软件错误、自然灾害甚至是人为误操作等——这些风险因素可能会对企业的数据库造成不可预知的影响,甚至导致数据丢失或者无法访问的情况发生。...

    Mysql实现增量恢复的方法详解

    1. **人为错误**:用户误操作导致的数据丢失,例如错误的SQL语句。 2. **系统故障**:在计划的下一次完全备份之前,服务器崩溃导致的数据丢失。 3. **主从复制**:在主从架构中,主数据库发生故障,需要恢复自上次...

    服务器安全运维规范.docx

    3. **案例说明**:以MySQL为例,通过监控slaveio和slavesql的状态,可以及时发现数据库复制中的问题。 - **具体做法**:设置报警规则。 - **目标**:确保数据库复制的连续性。 #### 八、总结 综上所述,服务器...

    基于web的图书查询系统的设计与实现说明书.docx

    然而,一些学校的图书馆仍然采用传统手工管理的方式来进行图书借阅记录,这种方式不仅效率低下,而且容易出现人为错误,如数据遗漏或误报等问题。为了提高图书馆管理效率和服务质量,引入计算机信息化管理势在必行。...

Global site tag (gtag.js) - Google Analytics