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

 2022-10-27    429  

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

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

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

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

1、mysql帮助说明

[oldboy_c64~]#mysql--help|grepdummy
-U,--i-am-a-dummySynonymforoption--safe-updates,-U.
i-am-a-dummyFALSE

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

2、指定-U登录测试

[oldboy_c64~]#mysql-uroot-poldboy123-S/data/3306/mysql.sock-U
WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis14
Serverversion:5.5.32-logMySQLCommunityServer(GPL)
Copyright(c)2000,2013,Oracleand/oritsaffiliates.Allrightsreserved.
OracleisaregisteredtrademarkofOracleCorporationand/orits
affiliates.Othernamesmaybetrademarksoftheirrespective
owners.
Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.
mysql>deletefromoldboy.student;
ERROR1175(HY000):YouareusingsafeupdatemodeandyoutriedtoupdateatablewithoutaWHEREthatusesaKEYcolumn
mysql>quit
Bye

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

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

[oldboy_c64~]#aliasmysql='mysql-U'
[oldboy_c64~]#mysql-uroot-poldboy123-S/data/3306/mysql.sock
WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis15
Serverversion:5.5.32-logMySQLCommunityServer(GPL)
Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.
mysql>deletefromoldboy.student;
ERROR1175(HY000):YouareusingsafeupdatemodeandyoutriedtoupdateatablewithoutaWHEREthatusesaKEYcolumn
mysql>deletefromoldboy.studentwhereSno=5;
QueryOK,1rowaffected(0.02sec)
mysql>quit
Bye
[oldboy_c64~]#echo"aliasmysql='mysql-U'">>/etc/profile
[oldboy_c64~]#./etc/profile
[oldboy_c64~]#tail-1/etc/profile
aliasmysql='mysql-U'

结论:

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

  •  标签:  
  • MySQL
  •  

原文链接:https://77isp.com/post/10615.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。