自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

防止人為誤操作MySQL數(shù)據(jù)庫?這次我懂了??!

數(shù)據(jù)庫 MySQL
在mysql命令加上選項-U后,當(dāng)發(fā)出沒有WHERE或LIMIT關(guān)鍵字的UPDATE或DELETE時,MySQL程序拒絕執(zhí)行。

[[336855]]

作者個人研發(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

寫在前面

今天,一位哥們打電話來問我說誤操作了他們公司數(shù)據(jù)庫中的數(shù)據(jù),如何恢復(fù)。他原本的想法是登錄數(shù)據(jù)庫update一個記錄,結(jié)果忘了加where條件,于是悲劇發(fā)生了。今天,我們不講如何恢復(fù)誤操作的數(shù)據(jù)(后面專門講如何恢復(fù)誤刪除的數(shù)據(jù)),我們講講如何從源頭上避免這樣的問題,這才是避免類似問題的根本措施。

如果文章對你有所幫助,請不要吝惜你的點贊、在看、留言和轉(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幫助說明

  1. [root@binghe~]# mysql --help|grep dummy       
  2.  -U, --i-am-a-dummy Synonym for option --safe-updates, -U. 
  3. i-am-a-dummy      FALSE 

在mysql命令加上選項-U后,當(dāng)發(fā)出沒有WHERE或LIMIT關(guān)鍵字的UPDATE或DELETE時,MySQL程序就會拒絕執(zhí)行。

指定-U登錄測試

  1. [root@binghe~]# mysql -uroot -proot -S /data/3306/mysql.sock -U 
  2. Welcome to the MySQL monitor. Commands end with ; or \g. 
  3. Your MySQL connection id is 14 
  4. Server version: 5.7.24-log MySQL Community Server (GPL) 
  5. Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 
  6. Oracle is a registered trademark of Oracle Corporation and/or its 
  7. affiliates. Other names may be trademarks of their respective 
  8. owners. 
  9. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
  10. mysql> delete from oldboy.student; 
  11. ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column 
  12. mysql> quit 
  13. Bye 

提示:不加條件無法刪除,目的達(dá)到。

指定別名

我們可以將操作MySQL的命令做成別名,防止他人和DBA誤操作數(shù)據(jù)庫,將操作MySQL的命令做成別名也非常簡單,這里,我們直接上示例了,如下所示。

  1. [root@binghe~]# alias mysql='mysql -U' 
  2. [root@binghe~]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock 
  3. Welcome to the MySQL monitor. Commands end with ; or \g. 
  4. Your MySQL connection id is 15 
  5. Server version: 5.7.24-log MySQL Community Server (GPL) 
  6. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
  7. mysql> delete from oldboy.student; 
  8. ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column 
  9. mysql> delete from oldboy.student where Sno=5; 
  10. Query OK, 1 row affected (0.02 sec) 
  11. mysql> quit 
  12. 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)境變量中,如下所示。

  1. [root@binghe~]# echo "alias mysql='mysql -U'" >>/etc/profile 
  2. [root@binghe~]# . /etc/profile 
  3. [root@binghe~]# tail -1 /etc/profile 
  4. 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í)行。

本文轉(zhuǎn)載自微信公眾號「冰河技術(shù)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系冰河技術(shù)公眾號。

 

責(zé)任編輯:武曉燕 來源: 冰河團(tuán)隊
相關(guān)推薦

2013-11-12 14:43:43

MySQL數(shù)據(jù)庫

2010-05-10 17:46:21

Oracle數(shù)據(jù)庫

2020-07-20 08:02:16

MySQL數(shù)據(jù)庫Nginx

2021-03-27 11:05:24

數(shù)據(jù)庫索引MySQL

2011-05-25 09:45:40

Oracle數(shù)據(jù)庫

2017-05-31 16:10:45

MySQL誤操作恢復(fù)數(shù)據(jù)

2021-03-19 08:16:03

數(shù)據(jù)庫

2019-10-21 13:52:14

MySQL數(shù)據(jù)庫命令

2010-06-01 12:51:23

MySQL數(shù)據(jù)庫

2009-06-04 15:59:53

Netbeans操作MMySQL數(shù)據(jù)庫

2019-06-24 05:05:40

緩沖池查詢數(shù)據(jù)InnoDB

2019-06-26 09:41:44

分布式事務(wù)微服務(wù)

2019-06-26 06:31:56

緩沖緩沖池查詢數(shù)據(jù)

2011-07-05 10:16:16

Qt 數(shù)據(jù)庫 SQLite

2021-08-02 09:01:29

PythonMySQL 數(shù)據(jù)庫

2010-05-28 14:51:47

MySQL數(shù)據(jù)庫

2010-05-14 11:12:16

連接MySql

2012-12-26 09:36:45

MySQLDelete

2010-09-03 16:44:22

2010-09-09 08:57:28

點贊
收藏

51CTO技術(shù)棧公眾號