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:
|
<<: CentOS-Methode zum Ändern der Standard-SSH-Portnummer – Beispiel
>>: Mehrere Möglichkeiten, Python-Programme im Linux-Hintergrund auszuführen
Aufgrund von Geschäftsanpassungen im Unternehmen ...
Inhaltsverzeichnis 1. Neue Verwendung der Uhr 1.1...
Vor einiger Zeit musste ich für die Entwicklung h...
1. Grundlagen der Linux-Firewall Das Linux-Firewa...
In diesem Artikel wird hauptsächlich die Methode ...
1. Gehen Sie zur offiziellen Website, um das JDK-...
Zeitfelder werden häufig bei der Datenbanknutzung...
Inhaltsverzeichnis Einfache Fabrik Fabrikmethode ...
Vorwort Tipp: Das Folgende ist der Hauptinhalt di...
Bei der Installation des Quellcodes von CentOS6.9...
Ich glaube, dass Leute, die Erfahrung mit React h...
<br />Originaltext: http://jorux.com/archive...
Vorwort: In MySQL sind Ansichten wahrscheinlich e...
Mit der Verbreitung mobiler Endgeräte wie dem iPa...
Benutzerdefinierte Tags können in XML- und HTML-Da...