首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 防誤操作利器:--safe-updates (-U) 模式強制 WHERE/LIMIT 條件

     編輯:MySQL 資料庫相關知識

高頻事故:UPDATE/DELETE 忘加 WHERE 導致全表覆蓋/清空。MySQL 內建 --safe-updates (短參 -U) 模式可從客戶端層面強制阻擋無條件寫操作。

驗證效果

# 以 -U 登入
mysql -uroot -poldboy123 -S /data/3306/mysql.sock -U

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)

永久生效:配置別名

# 當前會話
alias mysql='mysql -U'

# 永久生效 (所有用戶)
echo "alias mysql='mysql -U'" >> /etc/profile
. /etc/profile

原理與限制

  • 僅影響 mysql 客戶端工具,不影響應用程式連接池、JDBC、ORM 等
  • 要求 WHERE 條件包含索引列 (KEY column),單純 WHERE 1=1 仍會被擋
  • LIMIT 子句也可滿足條件 (如 DELETE FROM t LIMIT 100)
  • 生產環境建議:DBA 強制別名 + 應用層代碼審查 + 權限最小化 三重防線
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved