• 案例技巧---MySQL防止误操作操作


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

    1、mysql帮助说明

    1
    2
    3
    [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登录测试

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [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
    提示:不加条件无法删除,目的达到。
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [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程序拒绝执行
     
  • 相关阅读:
    6-2 播放厅模块基础环境构建
    6-1 Eureka实战之播放厅模块章节介绍
    5-18 影片模块作业思路讲解
    5-17 影院模块表现层构建
    5-16 影院模块基础环境构建
    5-15 影院模块表结构介绍
    5-14 影片模块整体测试
    5-13 影片保存实现
    5-12 影片保存准备
    5-11 影片详情查询实现
  • 原文地址:https://www.cnblogs.com/liuqiang0/p/8527998.html
Copyright © 2020-2023  润新知