So ändern Sie die IP-Einschränkungsbedingungen des MySQL-Kontos

So ändern Sie die IP-Einschränkungsbedingungen des MySQL-Kontos

Vorwort

Kürzlich stieß ich bei der Arbeit auf eine Anforderung: Um die Berechtigungen von MySQL-Benutzern zu ändern, muss der Zugriff auf bestimmte IP-Adressen beschränkt werden. Dies ist das erste Mal, dass ich auf eine solche Anforderung gestoßen bin. Infolgedessen stellte ich während des Testvorgangs einige Probleme bei der Verwendung des Berichts zum Aktualisieren der Systemberechtigungen fest. Die konkrete Demonstration ist wie folgt.

Hinweis: Die folgende Testumgebung ist MySQL 5.6.20. Wenn es Abweichungen zwischen den Testergebnissen und anderen Versionen gibt, beziehen Sie sich bitte auf die tatsächliche Umgebung.

Wir erstellen zunächst einen Testbenutzer LimitIP, der nur IP-Adressen im Segment 192.168 Zugriff gewährt. Die spezifischen Berechtigungen lauten wie folgt:

mysql> GRANT SELECT ON MyDB.* TO LimitIP@'192.168.%' IDENTIFIZIERT DURCH 'LimitIP';
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)
 
mysql> GRANT INSERT, UPDATE, DELETE ON MyDB.kkk TO LimitIP@'192.168.%';
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
 
MySQL> 
mysql> Berechtigungen leeren;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
 
MySQL> 
 
mysql> Berechtigungen für LimitIP@'192.168.%' anzeigen;
+----------------------------------------------------------------------------------------------------------------+
| Zuweisungen für [email protected].% |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* AN 'LimitIP'@'192.168.%' IDENTIFIZIERT DURCH PASSWORT '*72DDE03E02CC55A9478A82F3F4EBE7F639249DEC' |
| GRANT SELECT ON `MyDB`.* TO 'LimitIP'@'192.168.%' |
| GRANT INSERT, UPDATE, DELETE ON `MyDB`.`kkk` TO 'LimitIP'@'192.168.%' |
+----------------------------------------------------------------------------------------------------------------+
3 Zeilen im Satz (0,00 Sek.)
 
MySQL>

Angenommen, ich erhalte jetzt eine Anforderung: Dieser Benutzer darf nur auf die IP-Adresse 192.168.103.17 zugreifen. Daher plane ich, die mysql.user-Tabelle wie folgt zu aktualisieren:

mysql> wähle Benutzer, Host aus mysql.user, wobei Benutzer='LimitIP';
+---------+-----------+
| Benutzer | Gastgeber |
+---------+-----------+
| IP-Limit | 192,168 % |
+---------+-----------+
1 Zeile im Satz (0,00 Sek.)
 
mysql> aktualisiere mysql.user setze host='192.168.103.17', wobei user='LimitIP';
Abfrage OK, 1 Zeile betroffen (0,02 Sek.)
Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 0
 
mysql> Berechtigungen leeren;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)
 
mysql> Benutzer auswählen, Host vom Benutzer, wobei Benutzer = "LimitIP";
FEHLER 1046 (3D000): Keine Datenbank ausgewählt
mysql> mysql verwenden;
Einlesen von Tabelleninformationen zur Vervollständigung von Tabellen- und Spaltennamen
Sie können diese Funktion deaktivieren, um einen schnelleren Start mit -A zu erhalten
 
Datenbank geändert
mysql> Benutzer auswählen, Host vom Benutzer, wobei Benutzer = "LimitIP";
+---------+----------------+
| Benutzer | Gastgeber |
+---------+----------------+
| IP-Limit | 192.168.103.17 |
+---------+----------------+
1 Zeile im Satz (0,00 Sek.)
 
mysql> Berechtigungen für LimitIP@'192.168.103.17' anzeigen;
+----------------------------------------------------------------------------------------------------------------------------------+
| Zuschüsse für [email protected] |
+----------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* AN 'LimitIP'@'192.168.103.17' IDENTIFIZIERT DURCH PASSWORT '*72DDE03E02CC55A9478A82F3F4EBE7F639249DEC' |
+----------------------------------------------------------------------------------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)
 
MySQL>

Der obige Test ergab, dass die vorherigen Berechtigungen verloren gehen, wenn nur die Tabelle mysql.user geändert wird. Wie unten gezeigt, werden Sie bei einer Abfrage von mysql.db und mysql.tables_priv feststellen, dass der Wert des Host-Felds immer noch 192,168 % beträgt.

mysql> wähle * aus mysql.db, wobei Benutzer='LimitIP'\G;
*************************** 1. Reihe ***************************
     Gastgeber: 192.168.%
     Datenbank: MeineDB
     Benutzer: LimitIP
   Select_priv: Ja
   Insert_priv: N
   Update_priv: N
   Löschpriv: N
   Create_priv: N
   Drop_priv: N
   Grant_priv: N
  Referenzen_priv: N
   Index_priv: N
   Alter_priv: N
Create_tmp_table_priv: N
  Lock_tables_priv: N
  Create_view_priv: N
  Show_view_priv: N
 Create_routine_priv: N
 Alter_routine_priv: N
   Execute_priv: N
   Event_priv: N
   Trigger_priv: N
1 Zeile im Satz (0,00 Sek.)
 
FEHLER: 
Keine Abfrage angegeben
 
mysql> wähle * aus mysql.tables_priv, wobei Benutzer='LimitIP'\G;
*************************** 1. Reihe ***************************
  Gastgeber: 192.168.%
   Datenbank: MeineDB
  Benutzer: LimitIP
 Tabellenname: kkk
 Gewährer: root@localhost
 Zeitstempel: 0000-00-00 00:00:00
 Table_priv: Einfügen, Aktualisieren, Löschen
Column_priv: 
1 Zeile im Satz (0,00 Sek.)
 
FEHLER: 
Keine Abfrage angegeben

Also habe ich die Tabellen mysql.db und mysql.tables_priv weiter geändert und dann getestet und überprüft, ob alles in Ordnung war (siehe die Testschritte unten). Wenn das Konto über mehr als diese Berechtigungsstufen verfügt, müssen Sie möglicherweise auch Tabellen wie mysql.columns_priv, mysql.procs_priv usw. ändern.

mysql> Berechtigungen für LimitIP@'192.168.%' anzeigen;
FEHLER 1141 (42000): Für den Benutzer „LimitIP“ auf dem Host „192.168.%“ ist keine solche Berechtigung definiert.
MySQL> 
MySQL> 
mysql> aktualisiere mysql.db, setze Host='192.168.103.17', wobei Benutzer='LimitIP';
Abfrage OK, 1 Zeile betroffen (0,00 Sek.)
Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 0
 
mysql> aktualisiere mysql.tables_priv, setze Host='192.168.103.17', wobei Benutzer='LimitIP';
Abfrage OK, 1 Zeile betroffen (0,00 Sek.)
Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 0
 
mysql> Berechtigungen leeren;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
 
mysql> Berechtigungen für LimitIP@'192.168.103.17' anzeigen;
+----------------------------------------------------------------------------------------------------------------------------------+
| Zuschüsse für [email protected] |
+----------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* AN 'LimitIP'@'192.168.103.17' IDENTIFIZIERT DURCH PASSWORT '*72DDE03E02CC55A9478A82F3F4EBE7F639249DEC' |
| GRANT SELECT ON `MyDB`.* TO 'LimitIP'@'192.168.103.17' |
| GRANT INSERT, UPDATE, DELETE ON `MyDB`.`kkk` TO 'LimitIP'@'192.168.103.17' |
+----------------------------------------------------------------------------------------------------------------------------------+
3 Zeilen im Satz (0,00 Sek.)
 
MySQL>

Wenn Sie die IP-Einschränkungen des Benutzers ändern müssen, ist das Aktualisieren der MySQL-bezogenen Berechtigungstabelle nicht die beste Lösung. Tatsächlich gibt es einen besseren Weg, nämlich die RENAME USER-Syntax

mysql> BENUTZER 'LimitIP'@'192.168.103.17' IN 'LimitIP'@'192.168.103.18' UMBENENNEN;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
 
mysql> FLUSH-PRIVILEGIEN;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
 
mysql> Berechtigungen für „LimitIP“@„192.168.103.18“ anzeigen;
+----------------------------------------------------------------------------------------------------------------------------------+
| Zuschüsse für [email protected] |
+----------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* AN 'LimitIP'@'192.168.103.18' IDENTIFIZIERT DURCH PASSWORT '*72DDE03E02CC55A9478A82F3F4EBE7F639249DEC' |
| GRANT SELECT ON `MyDB`.* TO 'LimitIP'@'192.168.103.18' |
| GRANT INSERT, UPDATE, DELETE ON `MyDB`.`kkk` TO 'LimitIP'@'192.168.103.18' |
+----------------------------------------------------------------------------------------------------------------------------------+
3 Zeilen im Satz (0,00 Sek.)
 
MySQL>

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Kenntnisse zur Überwachung der MySQL-Indexnutzung (es lohnt sich, sie zu erwerben!)
  • Detaillierte Erläuterung der MySQL-Zeilensperren beim Auftreten zusammengesetzter Primärschlüssel und mehrspaltiger Indizes
  • Zusammenfassung der Situationen, in denen MySQL-Indizes nicht verwendet werden
  • Wird der Index in der MySQL-Abfragebedingung verwendet?
  • Beispielanalyse der Auswirkungen des MySQL-Index auf die Sortierung
  • Detaillierte Erläuterung der Einschränkungen und Beschränkungen von MySQL-partitionierten Tabellen
  • MySQL-Abfrageanweisung verwendet Limit, um die Anzahl der abgefragten Zeilen zu begrenzen
  • Lösung für das Problem, dass die MySQL-Verbindungsanzahl das Limit überschreitet
  • Analyse des Prinzips der MySQL-Indexlängenbeschränkung

<<:  CentOS-Methode zum Ändern der Standard-SSH-Portnummer – Beispiel

>>:  Mehrere Möglichkeiten, Python-Programme im Linux-Hintergrund auszuführen

Artikel empfehlen

Docker erstellt Schritte zur Implementierung von Kubectl-Images

Wenn der Programmdienst mit k8s bereitgestellt wi...

HTML-Formular_PowerNode Java Academy

1. Formular 1. Die Rolle des Formulars HTML-Formu...

Schritte zum Importieren von Millionen von Daten in MySQL mit .Net Core

Inhaltsverzeichnis Vorbereitende Vorbereitung Imp...

Unsere Gedanken zur Karriere als UI-Ingenieur

Ich bin seit langer Zeit depressiv, warum? Vor ein...

MySQL5.7.27-winx64 Version Win10 Download- und Installations-Tutorial-Diagramm

MySQL 5.7-Installation Wir lernen in der Schule M...

TD-Breitenproblem beim Zusammenführen von TD-Zellen

Im folgenden Beispiel ist die Anzeige normal, wenn...

So lösen Sie das Problem der automatischen Paketaktualisierung im Debian-System

Ich weiß nicht, wann es angefangen hat, aber jede...

Zeichnen Sie ein iPhone basierend auf CSS3

Ergebnis:Implementierungscode html <div Klasse...

Vue implementiert eine kleine Formularvalidierungsfunktion

In diesem Artikelbeispiel wird der spezifische Co...