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

Detaillierte Erläuterung der CSS BEM-Schreibstandards

BEM ist ein komponentenbasierter Ansatz zur Weben...

So legen Sie die Anzahl der MySQL-Verbindungen fest und ermitteln sie

Holen Sie sich die Anzahl der Verbindungen --- Ho...

So implementieren Sie ein Glücksradspiel im WeChat-Applet

Ich stelle hauptsächlich vor, wie man im WeChat-A...

Zusammenfassung der drei Regeln für die React-Statusverwaltung

Inhaltsverzeichnis Vorwort Nr.1 Ein Fokus Nr. 2 E...

Tutorial zum binären Suchbaumalgorithmus für JavaScript-Anfänger

Inhaltsverzeichnis Was ist ein binärer Suchbaum (...

Detaillierte Erklärung des Linux-Netstat-Befehls

Inhaltsverzeichnis Linux-Netstat-Befehl 1. Detail...

Linux-Installation Apache-Server-Konfigurationsprozess

Bereiten Sie die Taschen vor Installieren Überprü...

Sollte ich JQuery aufgeben?

Inhaltsverzeichnis Vorwort Was soll verwendet wer...

Detaillierte Erläuterung des SSR-Server-Side-Rendering-Beispiels von Vue

Warum Server-Side Rendering (SSR) verwenden? Bess...