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

So verarbeiten Sie sehr große Formularbeispiele mit Vue+ElementUI

Aufgrund von Geschäftsanpassungen im Unternehmen ...

Neue Verwendung von watch und watchEffect in Vue 3

Inhaltsverzeichnis 1. Neue Verwendung der Uhr 1.1...

So verwenden Sie Docker+DevPi zum Erstellen einer lokalen PyPi-Quelle

Vor einiger Zeit musste ich für die Entwicklung h...

So konfigurieren Sie eine JDK-Umgebung unter Linux

1. Gehen Sie zur offiziellen Website, um das JDK-...

JavaScript Factory Pattern erklärt

Inhaltsverzeichnis Einfache Fabrik Fabrikmethode ...

Der Vue.js-Cloud-Speicher realisiert die Bild-Upload-Funktion

Vorwort Tipp: Das Folgende ist der Hauptinhalt di...

Detailliertes Tutorial zur Installation des Quellcodes von CentOS6.9+Mysql5.7.18

Bei der Installation des Quellcodes von CentOS6.9...

Spezifische Verwendung von useRef in React

Ich glaube, dass Leute, die Erfahrung mit React h...

Semantik: Ist HTML/XHTML wirklich standardkonform?

<br />Originaltext: http://jorux.com/archive...

Detaillierte Analyse der Prinzipien und der Verwendung von MySQL-Ansichten

Vorwort: In MySQL sind Ansichten wahrscheinlich e...

So passen Sie die Textgröße im Webdesign an: Kleiner Text, großes Erlebnis

Mit der Verbreitung mobiler Endgeräte wie dem iPa...

So verwenden Sie benutzerdefinierte Tags in HTML

Benutzerdefinierte Tags können in XML- und HTML-Da...