【MySQL】如何最大程度防止人为误操作MySQL数据库?这次我懂了!!
點(diǎn)擊上方藍(lán)色“冰河技術(shù)”,關(guān)注并選擇“設(shè)為星標(biāo)”
持之以恒,貴在堅持,每天進(jìn)步一點(diǎn)點(diǎn)!
作者個人研發(fā)的在高并發(fā)場景下,提供的簡單、穩(wěn)定、可擴(kuò)展的延遲消息隊列框架,具有精準(zhǔn)的定時任務(wù)和延遲隊列處理功能。自開源半年多以來,已成功為十幾家中小型企業(yè)提供了精準(zhǔn)定時調(diào)度方案,經(jīng)受住了生產(chǎn)環(huán)境的考驗。為使更多童鞋受益,現(xiàn)給出開源框架地址:
https://github.com/sunshinelyz/mykit-delay
PS: 歡迎各位Star源碼,也可以pr你牛逼哄哄的代碼。? ? ??
寫在前面
今天,一位哥們打電話來問我說誤操作了他們公司數(shù)據(jù)庫中的數(shù)據(jù),如何恢復(fù)。他原本的想法是登錄數(shù)據(jù)庫update一個記錄,結(jié)果忘了加where條件,于是悲劇發(fā)生了。今天,我們不講如何恢復(fù)誤操作的數(shù)據(jù)(后面專門講如何恢復(fù)誤刪除的數(shù)據(jù)),我們講講如何從源頭上避免這樣的問題,這才是避免類似問題的根本措施。
如果文章對你有所幫助,請不要吝惜你的點(diǎn)贊、在看、留言和轉(zhuǎn)發(fā),你的支持是我持續(xù)創(chuàng)作的最大動力!
在mysql命令加上選項-U后,當(dāng)發(fā)出沒有WHERE或LIMIT關(guān)鍵字的UPDATE或DELETE時,MySQL程序就會拒絕執(zhí)行。那么,我們基于MySQL提供的這項設(shè)置,就可以輕松實現(xiàn)如何最大程度防止人為誤操作MySQL數(shù)據(jù)庫了。什么?你不信?不信我們就從MySQL的幫助說明說起,一起來看看如何基于MySQL的-u選項實現(xiàn)如何最大程度防止人為誤操作MySQL數(shù)據(jù)庫。
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后,當(dāng)發(fā)出沒有WHERE或LIMIT關(guān)鍵字的UPDATE或DELETE時,MySQL程序就會拒絕執(zhí)行。
指定-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提示:不加條件無法刪除,目的達(dá)到。
指定別名
我們可以將操作MySQL的命令做成別名,防止他人和DBA誤操作數(shù)據(jù)庫,將操作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在命令行會話設(shè)置alias mysql='mysql -U'之后,只能在當(dāng)前會話有效,關(guān)閉當(dāng)前連接服務(wù)器的命令行之后,會話失效,則別名設(shè)置也會隨之失效。如果想關(guān)閉連接服務(wù)器的會話終端,別名設(shè)置仍然有效,或者多個會話都能夠使用這個別名來操作數(shù)據(jù)庫,則我們可以將設(shè)置別名的命令添加到/etc/profile系統(tǒng)環(huán)境變量中,如下所示。
[root@binghe~]#?echo?"alias?mysql='mysql?-U'"?>>/etc/profile [root@binghe~]#?.?/etc/profile [root@binghe~]#?tail?-1?/etc/profile alias?mysql='mysql?-U'這樣,當(dāng)我們退出當(dāng)前連接服務(wù)器的會話終端,MySQL的別名設(shè)置依然有效,每次連接服務(wù)器時,不必在當(dāng)前會話中重新設(shè)置MySQL的命令別名,直接使用即可。
總結(jié)
在mysql命令加上選項-U后,當(dāng)發(fā)出沒有WHERE或LIMIT關(guān)鍵字的UPDATE或DELETE時,MySQL程序拒絕執(zhí)行。
IT技術(shù)分享社區(qū)
個人博客網(wǎng)站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機(jī)程序下載、ISP及串口基礎(chǔ)知識硬件:斷路器、接觸器、繼電器基礎(chǔ)知識
總結(jié)
以上是生活随笔為你收集整理的【MySQL】如何最大程度防止人为误操作MySQL数据库?这次我懂了!!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 硬件知识:串口通讯的起始、数据、停止位是
- 下一篇: 解惑图数据库!你知道什么是图数据库吗?
