MySQL kontrolliert die Anzahl der Versuche, falsche Passwörter einzugeben

MySQL kontrolliert die Anzahl der Versuche, falsche Passwörter einzugeben

1. So überwachen Sie MySQL-Deadlocks in Produktionsumgebungen und verringern die Wahrscheinlichkeit von Deadlocks

Zunächst einmal ist ein Deadlock nicht „gesperrt“. Ein Deadlock wird dadurch verursacht, dass zwei oder mehr Sitzungssperren auf eine Schleife warten.

1. Methoden zur Überwachung und Behandlung von Deadlocks

Zur Überwachung von Deadlocks stellt jede Version die Option innodb_print_all_deadlocks bereit. Durch Aktivieren dieser Option wird das Deadlock-Protokoll in das MySQL-Fehlerprotokoll ausgegeben. Daher kann der Zweck der Überwachung von Deadlocks durch die Überwachung des Fehlerprotokolls erreicht werden. Bei MariaDB ist es sogar noch einfacher. MariaDB stellt den Innodb_deadlocks-Zähler zur Verfügung, mit dem das Wachstum des Zählers überwacht werden kann, um Deadlocks zu erkennen.
Wenn es online häufig zu Deadlocks kommt, müssen diese ernst genommen werden. Da das Deadlock-Protokoll nur die letzten beiden SQL-Anweisungen aufzeichnet, die den Deadlock verursacht haben, kann die Ursache des Deadlocks nicht sofort über das Deadlock-Protokoll ermittelt werden. Wir sollten umgehend mit Entwicklern zusammenarbeiten, um den Deadlock-Prozess zu simulieren, die Ursache des Deadlocks zu analysieren und die Programmlogik zu ändern.

2. So verringern Sie die Wahrscheinlichkeit eines Deadlocks

1. Versuchen Sie, kurze Transaktionen zu verwenden und große Transaktionen zu vermeiden
2. Wenn Sie Sperren vom Typ FOR UPDATE/LOCK IN SHARE MODE hinzufügen, ist es am besten, die Transaktionsisolationsebene, z. B. die RC-Ebene, zu senken, um die Wahrscheinlichkeit eines Deadlocks zu verringern und die Sperrgranularität zu reduzieren.
3. Wenn eine Transaktion mehrere Tabellen oder mehrere Datensatzzeilen umfasst, muss die Operationsreihenfolge jeder Transaktion konsistent sein
4. Optimieren Sie die SQL-Effizienz durch Indizes, reduzieren Sie die Wahrscheinlichkeit von Deadlocks und vermeiden Sie das Sperren aller Daten aufgrund vollständiger Tabellenscans
5. Das Programm sollte über eine Transaktionsfehlererkennung und einen automatischen Wiederübermittlungsmechanismus verfügen
6. Deaktivieren Sie in Szenarien mit hoher Parallelität (Flash Sales) die Option innodb_deadlock_detect, um den Aufwand für die Deadlock-Erkennung zu verringern und die Parallelitätseffizienz zu verbessern

2. Was sind die hervorragenden Eigenschaften von MongoDB und was sind die geeigneten Szenarien

1. Hervorragende Eigenschaften

1. Praktikabilität: JSON-ähnliches Rich-Document-Datenmodell, natürlich entwicklerfreundlich
2. Verfügbarkeit: Automatische Hochverfügbarkeit basierend auf dem Raft-Protokoll, das problemlos eine Verfügbarkeit von 99,999 % bietet
3. Skalierbarkeit: Die Unterstützung für Sharded Cluster ermöglicht eine einfache horizontale Erweiterung für Unternehmen
4. Hohe Leistung: Unterstützung für verschachtelte Modelldesigns, Reduzierung diskreter Schreibvorgänge, vollständige Nutzung des physischen Speichers und Vermeidung von Festplattenlesevorgängen
5. Starke Komprimierung: Die WiredTiger-Engine bietet verschiedene Datenkomprimierungsstrategien mit einem Komprimierungsverhältnis von 2 bis 7, was die Festplattenressourcen erheblich spart.

(II) Geeignete Szenarien

1. Keine Anforderungen an Transaktionen mit mehreren Dokumenten und Zuordnungsabfragen mit mehreren Tabellen
2. Branchen mit schneller Geschäftsiteration und häufigen Nachfrageänderungen
3. Ein einzelner Cluster weist zu viele Parallelitäten auf und kann das Unternehmenswachstum nicht unterstützen
4. Das Datenvolumen wird voraussichtlich einen Speicherbedarf von mehreren TB und mehr erreichen
5. Erwarten Sie ein Datenbank-Hochverfügbarkeitsszenario von 99,999 %

3. Was sind die Vorteile der Sprache GO gegenüber anderen Programmiersprachen? Wie trifft man Entscheidungen in der tatsächlichen Produktionsumgebung?

1. Natürliche Unterstützung für hohe Parallelität, starke konsistente Sprache, hohe Entwicklungseffizienz und stabilen und sicheren Online-Betrieb
2. Speicherbereinigung, Sie müssen sich keine Gedanken über Speicherzuweisung und Recycling machen
3. Leistungsstarkes GMP-Modell, asynchrone Verarbeitung, Unterstützung für hohe Parallelität, selbst Anfänger können problemlos Code mit hoher Parallelität schreiben

In der tatsächlichen Produktionsumgebung wird empfohlen, die folgenden Aspekte zu berücksichtigen:

1. Betrachtet man das Geschäftsszenario, so gibt es für E-Commerce und Big Data-Verarbeitung vorgefertigte Lösungen, die jedoch nicht für den Einsatz geeignet sind. Zudem entfallen rechenintensive mathematische Operationen.
2. GO eignet sich gut für die schnelle Erstellung von Geschäftsprototypen und weist eine hohe iterative Entwicklungseffizienz auf, weshalb es von Startups wärmstens empfohlen wird.
3. Sehen Sie sich den vom Unternehmen entwickelten Technologie-Stack an. Wenn es große Unterschiede gibt, erleichtert die Wahl von GO den Einstieg und vereinheitlicht den Programmierstil.

4. Eine große Transaktion mit vielen Aktualisierungen wurde nun rückgängig gemacht, aber ich habe es eilig, herunterzufahren und neu zu starten. Was soll ich tun?

1. Versuchen Sie zunächst, die Ausführung großer Transaktionen in MySQL zu vermeiden, da große Transaktionen Probleme wie Verzögerungen bei der Master-Slave-Replikation verursachen.
2. Wenn eine große Transaktion beendet wird, führt MySQL automatisch ein Rollback der Transaktion durch. Sie können die ROLLING BACK-Transaktion über die TRANSACTIONS von Show Engine InnoDB Status sehen. Die entsprechenden Zeilensperren bleiben während des Rollback-Vorgangs bestehen.
3. Wenn Sie MySQL zu diesem Zeitpunkt zwangsweise herunterfahren, wird der Rollback-Vorgang auch nach dem Neustart von MySQL ausgeführt.
4. Um die Datensicherheit zu gewährleisten, wird daher empfohlen, vor dem Herunterfahren und Neustarten geduldig zu warten, bis das Rollback abgeschlossen ist. Vor dem Herunterfahren und Neustarten können Sie innodb_max_dirty_pages_pct senken, um schmutzige Seiten so oft wie möglich zu aktualisieren, und innodb_fast_shutdown deaktivieren.
5. Wenn es keine andere Möglichkeit gibt, den Computer herunterzufahren, können Sie zuerst MySQL mit kill -9 herunterfahren. Voraussetzung ist, dass Sie Double-One einrichten müssen, um die Transaktionssicherheit zu gewährleisten, da sonst möglicherweise mehr Transaktionsdaten verloren gehen. Nach dem Neustart der Instanz führt InnoDB dann automatisch eine Absturzwiederherstellung durch und setzt die vorherige Transaktion zurück.

PS: „kill -9“ ist eine Operation mit hohem Risiko und kann unvorhersehbare Probleme, wie etwa einen Startfehler von MySQL, verursachen. Gehen Sie daher mit Vorsicht vor.

5. So reduzieren Sie die Auswirkungen falscher oder fehlender WHERE-Bedingungen bei UPDATE/DELETE

1. Versuchen Sie, keine SQL-Befehle manuell online auszuführen, da dabei leicht Fehler passieren können. Bei der direkten Online-Ausführung von SQL-Befehlen ist eine zweite Person zur Bestätigung am besten geeignet.
2. Es ist am besten, SQL in der Testumgebung auszuführen und zu bestätigen, dass es korrekt ist, bevor es in der Produktionsumgebung ausgeführt wird, oder es vorab in der lokalen Textumgebung zu bearbeiten und zu bestätigen, bevor es ausgeführt wird
3. Es wird empfohlen, die Option sql_safe_updates zu aktivieren, um die Ausführung von UPDATE/DELETE-Befehlen ohne WHERE-Bedingungen, LIMIT-Bedingungen oder Indexbedingungen zu verhindern. Sie können die Option --safe-updates auch hinzufügen, wenn Sie mit dem MySQL-Client eine Verbindung zum Server herstellen, zum Beispiel: mysql --safe-updates -h xx -u xx
4. Wenn Sie DML-Operationen manuell online ausführen, aktivieren Sie zuerst den Transaktionsmodus, damit Sie bei fehlerhaften Operationen ein Rollback durchführen können. Beispiel: mysql> begin; update xxx; rollback;
5. Führen Sie DML-Operationen über die DB-Verwaltungsplattform aus und fügen Sie Beurteilungen zu gefährlichem SQL auf der Plattform hinzu, um die Ausführung gefährlichen SQLs direkt abzulehnen
6. Konfigurieren Sie eine verzögerte Slave-Datenbank, um Daten aus der verzögerten Slave-Datenbank nach versehentlichem Löschen schnell wiederherzustellen

6. Wie kontrolliert MySQL die Anzahl der Versuche, wenn ein Benutzer ein falsches Passwort eingibt?

1. Plug-In-Hilfe

Ab dem offiziellen MySQL 5.7.17 werden die Plug-Ins CONNECTION_CONTROL und CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS bereitgestellt, die wiederum drei Parameter bereitstellen: connection_control_failed_connections_threshold, connection_control_min_connection_delay und connection_control_max_connection_delay.

1. Schwellenwert für fehlgeschlagene Verbindungen der Verbindungssteuerung

Die Bedeutung dieses Parameters besteht darin, die Anzahl der Anmeldefehler zu steuern, bevor die Anmeldung verzögert wird.

2. Verbindungssteuerung - min. Verbindungsverzögerung

Dieser Parameter gibt die Mindestverzögerungszeit für jede erneute Verbindung an, nachdem die Anzahl der Fehler den Grenzwert überschritten hat. Die Berechnungsformel für die Verzögerung lautet (aktuelle Gesamtzahl der Fehler - Fehlerschwelle) connectioncontrolminconnection_delay. Je mehr Fehlerversuche es also gibt, desto länger ist die Verzögerungszeit.

3. Verbindungssteuerung_max_Verbindungsverzögerung

Die maximale Verzögerungszeit, nach der der Client die Verbindung wiederherstellen kann

4. Nach der Installation des Plug-Ins können Sie den Statuswert Connection_control_delay_generated und die Tabelle unter INFORMATION_SCHEMA überwachen.

CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS zur Überwachung der Anzahl fehlgeschlagener Anmeldeversuche

2. Fehlerprotokollüberwachung

Durch regelmäßiges Scannen des MySQL-Fehlerprotokolls zur Erfassung der Anzahl von Konto- und Kennwortfehlern kann bei Erreichen eines bestimmten Schwellenwerts die entsprechende Host-IP in der Systemfirewall blockiert werden, um das Konto zu sperren (der konkrete Vorgang hängt von der Situation ab).
Beispielsweise zeigt das Fehlerprotokoll 2019-05-10T13:04:41.232259Z 5 [Hinweis] Zugriff verweigert für Benutzer ‚xucl‘@‚127.0.0.1‘ (mit Passwort: JA)

(III) Sonstige Weisungen

1. Einige Studenten glauben fälschlicherweise, dass max_connection_errors die Anzahl der Versuche mit falschen Passwörtern steuern kann. Tatsächlich kann dieser Parameter nur die Porterkennung wie Telnet verhindern, d. h. die Anzahl der Protokoll-Handshake-Fehler aufzeichnen.

2. Schließlich müssen Sie in der Produktionsumgebung auf den Status von aborted_clients und aborted_connects achten und rechtzeitig auf Ausnahmen achten.

Zusammenfassen

Oben habe ich Ihnen erklärt, wie MySQL die Anzahl der Versuche steuert, wenn ein Benutzer ein falsches Passwort eingibt. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Schnelle Lösung des Fehlers nach der Änderung des Passworts von MySql
  • Schnelle Lösung für das Vergessen des MySQL-Root-Passworts oder einen Berechtigungsfehler auf dem MAC
  • MySQL 8.0.19 unterstützt die Sperrung eines Kontos nach dreimaliger Eingabe eines falschen Passworts (Beispiel)

<<:  Fallstudie zu JavaScript Anti-Shake

>>:  So kaufen und installieren Sie Alibaba Cloud-Server

Artikel empfehlen

So stellen Sie Rancher mit Docker bereit (keine Fallstricke)

Vor der Inbetriebnahme unbedingt lesen: Hinweis: ...

So speichern Sie Bilder in MySQL

1 Einleitung Beim Gestalten einer Datenbank ist e...

Grafisches Tutorial zur Installation von MySQL 5.7.17 (Windows)

Ich habe vor Kurzem mit dem Studium der Datenbank...

Detailliertes Tutorial zur Neuinstallation von Python 3.6.6 auf CentOS 7.5

ps: Die Umgebung ist wie der Titel Mögliche Abhän...

Installationsmethode für komprimierte MySQL 5.6-Pakete

Es gibt zwei Installationsmethoden für MySQL: MSI...

Detaillierte Erklärung der Schlüsselwörter und reservierten Wörter in MySQL 5.7

Vorwort Die Schlüsselwörter von MySQL und Oracle ...

UL-Listen-Tag-Design für Webseiten mit mehrspaltigem Layout

Als ich vor ein paar Tagen ein dreispaltiges Layou...

Acht Hook-Funktionen in der Vue-Lebenszykluskamera

Inhaltsverzeichnis 1. beforeCreate und erstellte ...

Reines CSS3 zum Erstellen eines Beispielcodes für Seitenwechseleffekte

Das, was ich vorher geschrieben habe, ist zu komp...