Dieser Artikel veranschaulicht anhand von Beispielen, wie MySQL-Benutzerberechtigungen überprüft und verwaltet werden. Teilen Sie uns die Einzelheiten zu Ihrer Information mit: 1. Die Überprüfung der MySQL-Berechtigungen erfolgt in zwei Schritten 1. Der Server prüft, ob die Verbindung zulässig ist: Benutzername, Passwort, Hostadresse. 2. Prüfen Sie, ob für jede Anfrage die erforderliche Umsetzungsberechtigung vorliegt. 2. MySQL-Berechtigungsliste
3. MySQL-Benutzerrechteverwaltungsvorgänge 1. Berechtigungsabfrage: (1) Alle MySQL-Benutzer und ihre Berechtigungen anzeigen: Wählen Sie * aus mysql.user\G; (Formatanzeige) (2) Zeigen Sie die aktuellen MySQL-Benutzerberechtigungen an: Zuschüsse anzeigen; (3) Berechtigungen eines Benutzers anzeigen: Berechtigungen für Benutzername@Host anzeigen; Beispiel: Berechtigungen für root@localhost anzeigen; 2. Erstellen Sie einen MySQL-Benutzer: Methode 1: Verwenden Sie den Befehl „Benutzer erstellen“, um ein Konto zu erstellen. Erstellen Sie den Benutzer „Benutzername“@„Host“, identifiziert durch „Passwort“; Beispiel: Erstellen Sie den Benutzer „wjt“@„localhost“, identifiziert durch „wujuntian“. Methode 2: Fügen Sie einen Benutzerdatensatz direkt in die mysql.user-Tabelle ein. Beispiel: Kopieren Sie den Code wie folgt: in mysql.user einfügen: setze user='wujuntian',host='localhost',password=password('123123'); Beachten: Achten Sie bei Verwendung von Methode 2 darauf, dass Sie zum Aktualisieren der Berechtigungen die entsprechenden Flush-Berechtigungen ausführen. Zweitens wurde nach MySQL 5.7 das Kennwortfeld der mysql.user-Tabelle durch authentication_string ersetzt, sodass „password“ in „authentication_string“ geändert und das Kennwort mit der Kennwortfunktion verschlüsselt werden muss. 3. MySQL-Benutzer löschen: Benutzer „Benutzername“@„Host“ löschen; 4. Erteilen Sie Mysql-Benutzerberechtigungen: Der neu erstellte Benutzer hat standardmäßig keine Berechtigungen und ihm müssen mit dem Befehl „Grant“ Berechtigungen erteilt werden. Das vollständige Format der Gewährungsanweisung lautet: Gewähren Sie der Berechtigungsliste den Datenbanknamen. Tabellenname für „Benutzername“@„Host“, identifiziert durch „Passwort“ mit Gewährungsoption; Beispiel: Gewähren Sie alle Berechtigungen für *.* an „wjt“@„localhost“, identifiziert durch „wujuntian“, mit der Gewährungsoption. Sie können „*“ verwenden, um alle Datenbanken oder alle Tabellen darzustellen, und „%“, um jede beliebige Hostadresse darzustellen. Mit „Grant“ können Sie Benutzern wiederholt Berechtigungen hinzufügen und so Berechtigungen stapeln. mit Erteilungsoption : Diese Option bedeutet, dass der Benutzer die Berechtigungen, die er besitzt, an andere erteilen kann. Denken Sie daran, die Berechtigungen nach der Autorisierung zu aktualisieren: Berechtigungen leeren; 5. Mysql-Benutzerrechte zurückfordern: Das Format der Widerrufsanweisung ist: Berechtigungsliste für Datenbankname.Datentabellenname von Benutzername@Host widerrufen; Beispiel: Auswahl für Testbenutzer von wjt@localhost widerrufen; Beachten: Tatsächlich wird bei der Ausführung der GRANT-Anweisung das Zielkonto erstellt, wenn es in der Berechtigungstabelle nicht vorhanden ist. Wenn es bereits vorhanden ist, wird die Berechtigung hinzugefügt. Die Nutzungsberechtigung kann nicht widerrufen werden, das heißt, die Benutzerberechtigung REVOKE kann den Benutzer nicht löschen. 6. Benennen Sie das Konto um: Benutzer „alter Benutzername“@„alter Host“ in „neuer Benutzername“@„neuer Host“ umbenennen; Beispiel: Benutzer „wujuntian“@„localhost“ in „ajun“@„localhost“ umbenennen; 7. Ändern Sie das MySQL-Benutzerkennwort: Methode 1: Verwenden Sie den Befehl „Passwort festlegen“. Passwort für „Benutzername“@„Host“ festlegen = Passwort („neues Passwort“); Beispiel: Passwort für „root“ festlegen@„localhost“ = Passwort („123456“); Methode 2: Ändern Sie das Feld „Passwort“ (oder „Authentifizierungszeichenfolge“) in der Tabelle „mysql.user“. Beispiel: Kopieren Sie den Code wie folgt: Aktualisieren Sie mysql.user und legen Sie Passwort=Passwort('123123') fest, wobei Benutzer='root' und Host='localhost' ist. Beachten: Bei dieser Methode müssen Sie den Befehl „flush privileges;“ ausführen, um die Berechtigungen zu aktualisieren. Andernfalls wird die Kennwortänderung nicht wirksam. Nach MySQL 5.7 sollte „password“ in „authentication_string“ geändert werden. Methode 3: Verwenden Sie den Befehl „Grant“, um das Kennwort während der Autorisierung zu ändern: Gewähren Sie Auswahl auf Datenbankname.Tabellenname für Benutzername@Host, identifiziert durch „Neues Passwort“ mit der Gewährungsoption. Beispiel: Kopieren Sie den Code wie folgt: Gewähren Sie die Auswahl für test.user an ajun@localhost, gekennzeichnet durch „111111“, mit der Gewährungsoption. Methode 4: Führen Sie die mysqladmin-Skriptdatei aus. Diese Datei befindet sich im Allgemeinen im Bin-Verzeichnis unter dem MySQL-Installationsverzeichnis. Geben Sie das Verzeichnis ein und geben Sie Befehle entsprechend den folgenden zwei spezifischen Situationen ein (nur der Root-Benutzer hat diese Berechtigung). (1) Der Nutzer verfügt nicht über ein Passwort: mysqladmin -u Benutzername Passwort neues Passwort; (2) Der Benutzer hat bereits ein Passwort: mysqladmin -u Benutzername -p Passwort neues Passwort; (Nach dem Drücken der Eingabetaste werden Sie aufgefordert, das alte Passwort einzugeben. Geben Sie es ein und die Änderung ist erfolgreich.) Beachten: Beim Ändern des Passworts müssen Sie die Funktion PASSWORD verwenden (für mysqladmin und GRANT müssen Sie sie nicht schreiben, da sie automatisch hinzugefügt wird). 8. Passwort für die Anmeldung bei MySQL vergessen: Methode 1: Stoppen Sie zunächst den laufenden MySQL-Dienst, geben Sie im Befehlszeilenfenster das Bin-Verzeichnis unter dem MySQL-Installationsverzeichnis ein und führen Sie die Datei mysqld mit dem Parameter -skip-grant-tables aus (auf einem Linux-System ist es sicherer, die Datei mysqld_safe auszuführen): mysqld --skip-grant-tables Dadurch können Sie die Zugriffskontrolle von MySQL umgehen und die MySQL-Datenbank als Administrator in der Konsole aufrufen. Öffnen Sie außerdem ein weiteres Befehlszeilenfenster, geben Sie das Bin-Verzeichnis unter dem MySQL-Installationsverzeichnis ein, geben Sie direkt ein: mysql, drücken Sie die Eingabetaste, Sie können sich bei MySQL anmelden und anschließend das Kennwort zurücksetzen (Hinweis: Derzeit kann nur die zweite Methode der vier Methoden unter „Änderung des MySQL-Benutzerkennworts“ verwendet werden!). Nachdem die Einstellung erfolgreich war, beenden Sie den Mysql-Dienst und starten Sie ihn neu. Methode 2: Ändern Sie die MySQL-Konfigurationsdatei my.ini. Tatsächlich ist das Prinzip dasselbe wie bei Methode 1. Beide verwenden den von MySQL bereitgestellten Parameter --skip-grant-tables, um die MySQL-Zugriffskontrolle zu überspringen. Öffnen Sie die MySQL-Konfigurationsdatei my.ini, fügen Sie unter ‚[mysqld]‘ „skip-grant-tables“ hinzu, speichern Sie, starten Sie den MySQL-Dienst neu und dann können Sie sich ohne Kennwort bei MySQL anmelden, um das Kennwort zu ändern. Die „mysql“-Datenbank in Mysql speichert die Datentabelle mit den Berechtigungsinformationen aller Mysql-Benutzer. Beim Start von MySQL wird der gesamte Inhalt der Berechtigungstabelle in den Speicher gelesen und der Inhalt im Speicher wird direkt zur Berechtigungsbeurteilung verwendet. Änderungen an der Berechtigungstabelle durch Erteilen, Widerrufen oder Festlegen eines Passworts werden vom Server sofort bemerkt. Der GRANT-Vorgang dient im Wesentlichen dazu, die Berechtigungen nach der Änderung der Berechtigungstabelle zu aktualisieren. Wenn Sie die Berechtigungstabelle jedoch manuell ändern, z. B. indem Sie die Berechtigungstabelle mit den Befehlen Einfügen, Aktualisieren, Löschen usw. bedienen, sollten Sie einen Befehl zum Leeren der Berechtigungen ausführen. Dadurch liest der Server den Inhalt der Berechtigungstabelle erneut in den Speicher ein, damit die Änderungen wirksam werden. Wenn Sie diesen Befehl nicht ausführen, müssen Sie den MySQL-Dienst neu starten, damit er wirksam wird. Daher ist es am besten, zum Bedienen der Berechtigungstabelle die Optionen „Grant“, „Revail“ oder „Set Password“ zu verwenden. Dadurch erspart man sich die Ausführung des Befehls zum Leeren der Berechtigungen. Wenn Sie vergessen, diesen Befehl auszuführen, werden Sie sehr verrückt. . . Darüber hinaus ist es zum Löschen oder Umbenennen von Benutzern besser, die Befehle „Drop User“ bzw. „Rename User“ anstelle der Befehle „Delete“ oder „Update“ zu verwenden. Ersteres führt nicht nur Operationen an der mysql.user-Datentabelle aus, sondern aktualisiert auch Datensätze in anderen Berechtigungstabellen, während letzteres nur Operationen an den Daten in der mysql.user-Tabelle ausführt. Dies führt zu vielen Problemen, da die Berechtigungsinformationen des Benutzers nicht nur in der mysql.user-Tabelle vorhanden sind. Wenn Sie beispielsweise „delete“ verwenden, um einen Benutzer in der Tabelle mysql.user zu löschen, aber keine anderen Berechtigungsdatentabellen verwenden, bleiben die Berechtigungsdatensätze über den Benutzer in anderen Berechtigungsdatentabellen wie „tables_priv“ bestehen. Wenn Sie das nächste Mal den Befehl „create user“ verwenden, um einen Benutzer mit demselben Namen zu erstellen, schlägt dies fehl. Sie können nur den Befehl „insert into“ verwenden, um Datensätze in die Tabelle mysql.user einzufügen, oder zuerst die Datensätze löschen, die sich auf den Benutzernamen in anderen Berechtigungsdatentabellen beziehen. Die Verwendung des Update-Befehls zum Umbenennen eines Benutzers kann ebenfalls große Probleme verursachen. Nach der Umbenennung verliert der Benutzer viele Berechtigungen und die Datensätze des ursprünglichen Benutzernamens in anderen Berechtigungstabellen werden zu nutzlosen Datensätzen, es sei denn, Sie führen denselben Update-Vorgang für jede Berechtigungstabelle aus, was sehr problematisch ist. Verwenden Sie also „Drop User“ und „Rename User“. Mit einem Befehl kann das System alles automatisch für Sie erledigen. Warum tun Sie es nicht? Mysql-Berechtigungsprüfung: MySQL prüft zunächst, ob es über die Berechtigung für den größeren Bereich verfügt. Wenn nicht, prüft es anschließend den kleineren Bereich. Beispiel: Überprüfen Sie zunächst, ob für diese Datenbank eine Auswahlberechtigung vorliegt. Wenn ja, lassen Sie die Ausführung zu. Wenn nicht, prüfen Sie, ob für die Tabelle eine Auswahlberechtigung bis zur feinsten Granularität vorliegt. Wenn keine Berechtigung vorliegt, wird die Ausführung verweigert. Deshalb gilt: Je feiner die Granularität der Steuerung, desto mehr Schritte umfasst die Berechtigungsüberprüfung und desto schlechter ist die Leistung. Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“, „Zusammenfassung der Kenntnisse zu MySQL-Datenbanksperren“ und „Zusammenfassung der allgemeinen MySQL-Funktionen“. Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist. Das könnte Sie auch interessieren:
|
<<: So stellen Sie Python-Crawler-Skripte unter Linux bereit und richten geplante Aufgaben ein
>>: Implementierung integrierter Module und benutzerdefinierter Module in Node.js
Enctype: Gibt den Kodierungstyp an, der vom Browse...
Was tun, wenn Sie Windows Server 2008R2 vergessen...
Inhaltsverzeichnis FileReader liest lokale Dateie...
Inhaltsverzeichnis verwenden Installieren Wie wir...
Wenn während des Entwicklungsprozesses nach der W...
Einführung Beginnen wir wie immer mit einer Szene...
abschließend % der Breite: definiert die prozentu...
1. Voraussetzungen 1. Das Projekt wurde bereitges...
Inhaltsverzeichnis Verwendung des Skelettbildschi...
1 Erstellen Sie einen Benutzer und geben Sie den ...
Inhaltsverzeichnis Überblick Globale Hook-Funktio...
Inhaltsverzeichnis Problembeschreibung Frontend-S...
Inhaltsverzeichnis 1. Signalliste 1.1. Echtzeitsi...
Kommunikation zwischen Containern 1. Netzwerkfrei...
Inhaltsverzeichnis Vorwort Was ist Index-Pushdown...