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
Vorwort Tomcat ist ein hervorragender Java-Contai...
MySQL 8.0.22 Download-, Installations- und Konfig...
Wenn der Programmdienst mit k8s bereitgestellt wi...
1. Entpacken Sie mysql-8.0.21-winx64 2. Konfiguri...
1. Formular 1. Die Rolle des Formulars HTML-Formu...
Inhaltsverzeichnis Vorbereitende Vorbereitung Imp...
Heute habe ich die kostenlose Version von MySQL i...
Ich bin seit langer Zeit depressiv, warum? Vor ein...
MySQL 5.7-Installation Wir lernen in der Schule M...
Im folgenden Beispiel ist die Anzeige normal, wenn...
Wirkung demo.html <html> <Kopf> <m...
Ich weiß nicht, wann es angefangen hat, aber jede...
Die Verwendung von depends_on zum Sortieren von C...
Ergebnis:Implementierungscode html <div Klasse...
In diesem Artikelbeispiel wird der spezifische Co...