1. 程式人生 > >MySQL之——如何防止人為誤操作MySQL資料庫

MySQL之——如何防止人為誤操作MySQL資料庫

今天,一位原公司的同事,打電話來問我說誤操作了資料庫資料,如何恢復。他原本的想法是登入資料庫update一個記錄,結果忘了加where,於是悲劇發生了。今天,我們不講如何恢復誤操作的資料,我們講講如何從源頭上避免這樣的問題,這才是避免類似問題的根本措施。好了。我們直接進入主題:

1、MySQL幫助說明

[[email protected] ~]# 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登入測試

[[email protected] ~]# 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.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誤操作

[[email protected] ~]# alias mysql='mysql -U'
[[email protected] ~]# 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
[
[email protected]
~]# echo "alias mysql='mysql -U'" >>/etc/profile [[email protected] ~]# . /etc/profile [[email protected] ~]# tail -1 /etc/profile alias mysql='mysql -U'

4、結論:

在mysql命令加上選項-U後,當發出沒有WHERE或LIMIT關鍵字的UPDATE或DELETE時,mysql程式拒絕執行

相關推薦

MySQL——如何防止人為操作MySQL資料庫

今天,一位原公司的同事,打電話來問我說誤操作了資料庫資料,如何恢復。他原本的想法是登入資料庫update一個記錄,結果忘了加where,於是悲劇發生了。今天,我們不講如何恢復誤操作的資料,我們講講如

(轉)防止人為操作MySQL數據庫技巧一例

mysq ring 5.5 作者 trade ffi ont sql 領導 原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://oldboy.blog.51cto.com/2561410/1321061 防

恢復 MySQL 資料庫人為操作丟失的資料

1. 全量備份與增量備份理論基礎 1.1 全量備份 全量資料就是資料庫中的所有資料,全量備份就是把資料庫中所有的資料進行備份。 1.2 增量備份 增量資料就是從上次全量備份之後,到下一次全備之前時間段更新的新資料。對於 MySQL 來說,binlog 日誌就是 MySQL 的增量資料。 1.3 按天

資料庫ubuntu下如何安裝MySQL?如何管理和操作MySQL

文章目錄 1. 如何安裝MySQL? 1.1 安裝資料庫伺服器 1.2 安裝客戶端程式 1.3 安裝一些庫及標頭檔案 2. 如何管理MySQL?開啟、關閉、檢視等 2

MySQL終端(Terminal)管理資料庫、資料表、資料的基本操作

MySQL有很多的視覺化管理工具,比如“mysql-workbench”和“sequel-pro-”。 現在我寫MySQL的終端命令操作的文章,是想強化一下自己對於MySQL的理解,總會比使用圖形化的理解透徹,因為我本來就比較喜歡寫程式碼。同時寫出來這些文章,是想要給大家當個參考,希望也能對大家有所幫助,有所

nodejsMAC上終端操作mysql資料庫(一)

-------------刪除解除安裝mysql資料庫--------- 解除安裝MySQL,終端執行: 開啟終端視窗 使用mysqldump備份你的資料庫將文字檔案! 停止資料庫伺服器 sudo rm /usr/local/my

Mac上MySQL初始化密碼操作

     個人在Mac上操作資料庫,遇到的啟動資料庫問題的簡單記錄     1、蘋果->系統偏好設定->最下邊點mysql 在彈出頁面中 關閉mysql服務(點選stop mysql server)    

MySQL庫、表操作

一、庫操作 建立庫 create database 庫名(charset utf8 對庫的編碼進行設定,不寫就用預設值) 庫名可以由字母、數字、下劃線、特殊字元,要區分大小寫,唯一性,不能使用關鍵字,不能用數字開頭,最長128位 檢視資料庫注意:在cmd中輸入指令是不區分大小寫的 show datab

MySQL——表資料檔案損壞導致資料庫無法啟動

一、問題日誌 2017-08-31 14:18:05 4122 [Note] InnoDB: Database was not shutdown normally! 2017-08-31 14:18:05 4122 [Note] InnoDB: Starting cra

使用mysql的binlog恢復操作(update|delete)的資料

binlog格式介紹 MYSQL binlog複製主要有三種方式:基於SQL語句的複製(statement-based replication, SBR),基於行的複製(row-based replication, RBR),混合模式複製(mixed-bas

PC軟體開發技術三:C#操作SQLite資料庫

我們在開發應用是經常會需要用到一些資料的儲存,儲存的方式有多種,使用資料庫是一種比較受大家歡迎的方式。但是對於一些小型的應用,如一些移動APP,通常的資料庫過於龐大,而輕便的SQLite則能解決這一問題。不但操作方便,而且只需要要一個檔案即可,在這裡我們來說一說使用C#語言操作SQLite資料庫

XAMPP安裝之後,還用裝MYSQL嗎?怎樣以cmd操作MYSQL,怎樣進入設定?

(一)不用裝MYSQL了。 (二)DOS介面操作MYSQL: 首先,要知道自己把MySQL資料夾放在哪了,這很重要!在這裡有個情況要說明下: 那就是要不要配置環境變數的問題,如果配置的話優點很明顯,即每次開啟MySQL服務不用在尋找MySQL資料夾中bin資料夾的放置路徑

Redis使用lua指令碼操作redis資料庫的原因

前言 為什麼要用lua指令碼操作redis資料庫? 1.減少開銷–減少向redis伺服器的請求次數 2.原子操作–redis將lua指令碼作為一個原子執行 3.可複用–其他客戶端可以使用已經執行過的lua指令碼 4.增加redis靈活性–lua指令碼可以幫助redis做

【Mac系統 + Python + Django】開發一個釋出會系統【Django模型(二)】 【Mac系統 + Mysql安裝Mysql資料庫 【Python + Mysql用pymysql庫連線Mysql資料庫並進行增刪改查操作

上一部分給大家介紹Django的檢視。 接下來繼續來了解Django框架,來看第二部分,此部分是對資料庫的操作。   目錄: 一、設計系統表 二、admin後臺管理 三、基本資料訪問(SQLite資料庫) 四、Django配置MySQL   &

MySQLDDL操作資料庫

      DDL(Data Definition Language),翻譯過來叫:資料庫定義語言,用於在資料庫定義建立或刪除資料庫物件等操作,例如:create(建立)、drop(刪除)、alter(修改)等語句。       &nbs

資料庫怎麼辦?mysql 回滾,撤銷操作,恢復資料

剛剛不小心把資料庫刪掉了,於是想著上網上找找有沒有可以恢復資料庫的方法,沒想到還真有,除了備份以外,還有以下方法。 在mysql有時執行了錯誤的update或者delete時導致大量資料錯誤恢復的辦法。執行時沒有開啟事務,也沒有對資料進行。這時就需要使用到sqlbinlog工具。 sqlbinlog需要開

mysql學習【第3篇】:資料庫增刪改查操作 資料庫操作,資料操作

資料庫之表操作,資料操作 注意的幾點:1.如果你在cmd中書命令的時候,輸入錯了就用\c跳出   2.\s檢視配置資訊

關係型資料庫MySQL觸發器和表資料操作

一、觸發器(TRIGGER) 觸發器是MySQL的資料庫物件之一,該物件與程式語言中的函式非常類似,都需要申明、執行等。 1.1、 建立觸發器 1> 建立有一條執行語句的觸發器 建立觸發器通過SQL語句CREATE TRIGGER 來

Python 操作 MySQL 資料庫

什麼是MySQLdb? MySQLdb 是用於Python連結Mysql資料庫的介面,它實現了 Python 資料庫 API 規範 V2.0,基於 MySQL C API 上建立的。 安裝 Python MySQLdb 模組 linux版本:(配置好yum源) pip install MySQL-

jdbc操作mysql資料庫防止注入攻擊版本)

package TestJDBC; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.