Wie kann MySQL das Löschen und Weglaufen von Datenbanken wirksam verhindern?

Wie kann MySQL das Löschen und Weglaufen von Datenbanken wirksam verhindern?

Sie haben sicher schon davon gehört, dass manche Entwickler aufgrund persönlicher Fehler beim Löschen oder Aktualisieren von Anweisungen keine Where-Klausel hinzugefügt haben, was zu Verwirrung in den gesamten Tabellendaten geführt hat.

MySQL-Sicherheitsmodus: MySQL meldet einen Fehler, wenn es feststellt, dass die Lösch- oder Aktualisierungsanweisung keine Where- oder Limit-Bedingung aufweist. Die gesamte SQL-Anweisung wird nicht ausgeführt, wodurch das versehentliche Löschen von Tabellen effektiv verhindert wird.

Einstellungen für den abgesicherten Modus

Überprüfen Sie den Status in MySQL mit dem folgenden Befehl:

 Variablen wie „sql_safe_updates“ anzeigen;

Bildbeschreibung hier einfügen

Der Standardzustand ist AUS, setzen Sie den Zustand einfach auf EIN:

  • set sql_safe_updates=1; //Öffnen
  • set sql_safe_updates=0; //Schließen

Nach der Einstellung auf ON

  • Update-Anweisung : Wenn für die Spalte in der Where-Bedingung kein Index verfügbar ist und keine Limit-Einschränkung vorliegt, wird das Update abgelehnt. Wenn die Where-Bedingung konstant ist und keine Begrenzung vorhanden ist, wird die Aktualisierung abgelehnt.
  • Löschanweisung: ①Die Where-Bedingung ist eine Konstante, ②oder die Where-Bedingung ist leer, ③oder für die Spalte in der Where-Bedingung ist kein Index und keine Grenzwertbeschränkung verfügbar. Die Löschung wird abgelehnt.

prüfen

Testen im abgesicherten Modus

1. Aktualisieren und Löschen ohne Where-Klausel

delete from t_user

aus t_user löschen
> 1175 - Sie verwenden den abgesicherten Aktualisierungsmodus und haben versucht, eine Tabelle ohne WHERE zu aktualisieren, die eine KEY-Spalte verwendet
> Zeit: 0,001 s

update t_user set name='123'

Aktualisiere t_user set name='123'
> 1175 - Sie verwenden den abgesicherten Aktualisierungsmodus und haben versucht, eine Tabelle ohne WHERE zu aktualisieren, die eine KEY-Spalte verwendet
> Zeit: 0,001 s

2. Löschen von Nicht-Indexschlüsseln

delete from t_user where name='123'

Löschen aus t_user, wobei Name = "123"
> 1175 - Sie verwenden den abgesicherten Aktualisierungsmodus und haben versucht, eine Tabelle ohne WHERE zu aktualisieren, die eine KEY-Spalte verwendet
> Zeit: 0,007 s

Wenn die Where-Bedingung zum Löschen kein Indexschlüssel ist, müssen Sie eine Begrenzung hinzufügen.

delete from t_user where name='123' limit 1

Löschen von t_user, wobei Name = "123" Limit 1
> Betroffene Zeilen: 0
> Zeit: 0,002 s

3. Indexschlüssel löschen

delete from t_user where group_id='123'

Löschen von t_user, wobei group_id='123'
> Betroffene Zeilen: 0
> Zeit: 0s

Zusammenfassen

Wenn sql_safe_updates=1 gesetzt ist, muss die update Anweisung eine der folgenden Bedingungen erfüllen, um erfolgreich ausgeführt zu werden

  • Verwenden Sie die Where-Klausel. Die Spalte in der Where-Klausel muss die Präfixindexspalte sein.
  • Limit verwenden
  • Verwenden Sie die Where-Klausel und das Limit gleichzeitig (die Spalte in der Where-Klausel muss keine Indexspalte sein).

Die delete muss eine der folgenden Bedingungen erfüllen, um erfolgreich ausgeführt zu werden

  • Verwenden Sie die Where-Klausel. Die Spalte in der Where-Klausel muss die Präfixindexspalte sein.
  • Die Ausführung kann nur erfolgreich sein, wenn die Where-Klausel und das Limit (die Spalte in der Where-Klausel muss keine Indexspalte sein) gleichzeitig verwendet werden.

Dies ist das Ende dieses Artikels darüber, wie man MySQL effektiv daran hindert, Datenbanken zu löschen. Weitere Informationen dazu, wie man MySQL daran hindert, Datenbanken zu löschen, finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • MySQL häufig verwendete SQL und Befehle vom Eintrag bis zum Löschen der Datenbank und zum Weglaufen
  • MySQL Detaillierte Analyse vom Löschen der Datenbank bis zum Weglaufen_Fortgeschritten (I) - Datenintegrität
  • Datenbank löschen und weglaufen? So sichern Sie die MySQL-Datenbank mit xtraback

<<:  js implementiert Array-Abflachung

>>:  Detaillierte Erklärung zur Einstellung des Hintergrundbild-Attributs in HTML

Artikel empfehlen

Codeanalyse von Benutzervariablen in MySQL-Abfrageanweisungen

Im vorherigen Artikel haben wir die MySQL-Optimie...

So führen Sie .sh-Dateien im Linux-System aus

Es gibt zwei Möglichkeiten, .sh-Dateien im Linux-...

Vue implementiert einen einfachen Lupeneffekt

In diesem Artikelbeispiel wird der spezifische Co...

Mehrere Möglichkeiten zum einfachen Durchlaufen von Objekteigenschaften in JS

Inhaltsverzeichnis 1. Selbstaufzählbare Eigenscha...

Die perfekte Lösung, um das Passwort in mysql8.0.19 zu vergessen

Lesetipp: MySQL 8.0.19 unterstützt Kontosperrfunk...

Die neueste Sammlung von 18 Webdesign-Arbeiten im grünen Stil

Toy Story 3 Online-Marketing-Website Zen Mobile E...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.22 winx64

Das grafische Tutorial zur Installation und Konfi...

Docker View JVM-Speichernutzung

1. Rufen Sie den Hostcomputer des Docker-Containe...

jQuery-Plugin zur Implementierung des Minesweeper-Spiels (3)

In diesem Artikel wird der dritte Artikel zur Ver...