Das MySQL-Berechtigungssystem authentifiziert sich in den folgenden zwei Phasen:
Führen Sie eine Identitätsauthentifizierung für verbundene Benutzer durch, und illegalen Benutzern wird die Verbindung verweigert.
Gewähren Sie authentifizierten legalen Benutzern entsprechende Berechtigungen, und Benutzer können im Rahmen dieser Berechtigungen entsprechende Vorgänge in der Datenbank ausführen.
Beim Berechtigungszugriffsprozess handelt es sich hauptsächlich um die Benutzertabelle und die Datenbanktabelle unter der MySQL-Datenbank. Die Datenstruktur der Benutzertabelle ist wie folgt:
Die Datenstruktur der Datenbanktabelle ist wie folgt:
Beschreibung der Tabelle: Sie enthält Benutzerspalten, Berechtigungsspalten, Sicherheitsspalten und Ressourcenkontrollspalten. Die am häufigsten verwendeten sind die Benutzerspalte und die Berechtigungsspalte. Berechtigungen sind in normale Berechtigungen und Verwaltungsberechtigungen unterteilt. Operationen der Benutzerdatenbank mit normalen Berechtigungen wie select_priv, insert_priv usw. Verwaltungsberechtigungen werden hauptsächlich zum Verwalten von Datenbankvorgängen verwendet, z. B. process_priv, super_priv usw.
Wenn ein Benutzer eine Verbindung herstellt, erfolgt der Zugriffsprozess auf die Berechtigungstabelle:
Bestimmen Sie zunächst die verbundene IP und den Benutzer aus den drei Feldern Host, Benutzer und Passwort in der Benutzertabelle Ob Der Name und das Passwort sind in der Tabelle vorhanden. Wenn sie vorhanden sind, wird die Überprüfung bestanden, andernfalls wird die Verbindung abgelehnt.
Nach bestandener Authentifizierung erhalten Sie die Datenbankberechtigungen in der Reihenfolge der folgenden Berechtigungstabelle: user->db->tables->priv->columns_priv. Globale Berechtigungen decken lokale Berechtigungen ab. Wenn ein Benutzer beispielsweise über die Berechtigung „Auswählen“ in der Benutzertabelle verfügt, verfügt er auch über die Berechtigung „Auswählen“ für alle Spalten in allen Tabellen und in allen Daten.
Detaillierte Beschreibung der Berechtigungssuche: Wenn der Benutzer die Berechtigungsauthentifizierung besteht und Berechtigungen zuweist, werden die Berechtigungen in der Reihenfolge Benutzer->db->tables_priv->columns_priv zugewiesen Das heißt, die Berechtigungen werden zuerst überprüft Tabellenbenutzer, wenn die entsprechende Berechtigung in der Benutzertabelle Y ist, dann sind alle dem Benutzer entsprechenden Datenbankberechtigungen Y, und db, tables_priv und columns_priv werden nicht mehr überprüft, wenn es N ist. Die spezifischen Datenbankberechtigungen des Benutzers werden in der Datenbanktabelle gesucht. Wenn Sie die Y-Berechtigung in der Datenbank erhalten, überprüfen Sie sonst die Tabellenberechtigungen, die der Datenbank entsprechen Ja, Sie werden nicht suchen. Andernfalls überprüfen Sie die Tabelle columns_priv, um die entsprechenden spezifischen Spaltenberechtigungen anzuzeigen. Dies ist wichtig, wenn wir Benutzerberechtigungen erteilen.
Um einen Benutzer zu erstellen, können Sie die Grant-Syntax verwenden, um die Benutzertabelle zu erstellen oder direkt zu bedienen.
Methode 1:
Verwendungstabelle direkt bedienen
in Benutzer(Host
,User
,Password
) Werte("127.0.0.1",test",password("51testit") einfügen ) );
Methode 2:
Format CREATE USER 'username'@'host' IDENTIFIED BY 'password'
eg:CREATE USER 'test'@'127.0.0.1' IDENTIFIED BY '51testit';
Nach der Erstellung melden Sie sich wie folgt an:
MySQL-Verschlüsselungsmethode: Die MYSQL323-Verschlüsselung generiert eine 16-Bit-Zeichenfolge, während in MySQLSHA1 eine 41-Bit-Zeichenfolge erhalten bleibt . Unter ihnen wird nicht zum eigentlichen Passwortvorgang hinzugefügt. Es wird beobachtet, dass viele Benutzer „“ tragen und das „*“ während des eigentlichen Knackvorgangs entfernt wird Die Anzahl der Ziffern des von MySQLSHA1 verschlüsselten Passworts beträgt 40 Personen.
Host-Feldbeschreibung
Der Host-Wert kann der Hostname oder die IP-Nummer sein, oder locahost stellt den lokalen Host dar.
Sie können Platzhalterzeichen „%“ und „_“ vor dem Host-Spaltenwert verwenden. „%“ bedeutet, dass ein beliebiger Host-Wert gleich „%“ ist. . Beispielsweise stimmt „%.myweb.com“ mit allen Hosts in allen mysql.com-Domänen überein. Der Fall ist wie folgt:
Host | User | 解析 |
---|---|---|
myweb.wang | pps | pps,从myweb.wang连接 |
% | pps | pps,从任何主机连接 |
% | ” | 任何用户,从任何主机连接 |
122.164.35.127 | pps | pps,从122.164.35.127连接 |
122.164.35.% | pps | pps,从122.164.35.类型子网的任何主机连接 |
Für den oben erstellten Test habe ich keine Autorisierungsvorgänge durchgeführt. Als ich den Testbenutzer zum Betreiben der Datenbank verwendet habe, habe ich Folgendes festgestellt:
Nein Datenbankbetriebsberechtigungen: Wie kann ich die Berechtigungen eines Benutzers überprüfen?
Berechtigungen anzeigen
Methode eins:
Zuschüsse für test@127.0.0.1 anzeigen;
Methode zwei:
Die in der Benutzertabelle aufgezeichneten Berechtigungen anzeigen.
select * from mysql.user where user='test' and host='127.0.0.1' G;
Das Syntaxformat ist wie folgt folgt:
gewähren Sie [privilege1|privilege2|alle Privilegien] für dbName|.tableName oder an user@hostName;
Wenn Sie dem Testbenutzer die xxpt-Auswahlberechtigung erteilen:
select aktivieren xxpt.* to test.127.0.0.1;
Die Datenbanktabelle wurde geändert und ein neuer Datensatz hinzugefügt. Die Benutzertabelle hat sich jedoch nicht geändert. Wie folgt:
Zu diesem Zeitpunkt können Sie den Testbenutzer verwenden, um Datenabfragevorgänge durchzuführen, aber Sie können keine Daten hinzufügen, löschen oder ändern. Erteilen Sie ihm also alle Berechtigungen für die xxpt-Datenbank.
Gewähren Sie alle Berechtigungen für xxpt.* an test@127.0.0.1;
Benutzertestberechtigungen sind wie folgt:
Sie können zu diesem Zeitpunkt Daten aktualisieren
Verwaltungsberechtigungen gewähren Sueper, Prozess, Datei gewähren
gewähren Sueper, Prozess, Datei Ein . zu 'test'@'127.0.0.1'
Das Ein in der Anweisung kann nur sein gefolgt von .
Hinweis: Die Nutzungsberechtigung wird für die Anmeldung verwendet und kann keine Vorgänge ausführen.
Verwenden Sie Gewähren, um Berechtigungen hinzuzufügen, und Widerrufen, um Berechtigungen wiederzuverwenden. Natürlich können Berechtigungen widerrufen werden, und Sie können auch direkt auf die Tabellen user, db, tables_priv und columns_priv zugreifen. Die Nutzungserlaubnis kann jedoch nicht widerrufen werden.
Um die Lese- und Schreibberechtigungen des Tests für alle Datenbanken zu widerrufen:
Auswahl widerrufen, einfügen auf . von test@127.0.0.1;
1. Verwenden Sie „mysqladmin“
'@'127.0.0.1' identifiziert durch 'isayhello';
4. Ändern Sie direkt die Benutzertabelle
aktualisieren Sie den Benutzersatz Password=password(„newpassword“), wobei ***
;Ergänzen Sie die Berechtigungen in MySQL
Berechtigungsstufe |
Berechtigungsbeschreibung |
|
Datenbank, Tabelle oder Index |
Datenbank erstellen , Tabellen- oder Indexberechtigungen |
DROP |
Datenbank oder Tabelle |
Datenbank- oder Tabellenberechtigungen entfernen |
OPTION GEWÄHREN |
Datenbank, Tabelle oder gespeichertes Programm | Berechtigungsoptionen erteilen |
REFERENZEN |
Datenbank oder Tabelle |
|
ALTER |
Tabelle |
Änderung B. Felder, Indizes usw. hinzufügen. |
LÖSCHEN |
Tabelle | Datenlöschberechtigung |
INDEX |
Tabelle |
Indexberechtigungen |
INSERT |
Tabelle |
INSERT Berechtigungen |
SELECT |
Tabelle |
Abfrageberechtigungen | UPDATE |
Tabelle |
BERECHTIGUNGEN AKTUALISIEREN |
|
ANSICHT ERSTELLEN |
Ansicht | ANSICHTBERECHTIGUNGEN ERSTELLEN |
ANSICHT ANZEIGEN |
ANSICHT |
Ansichtsberechtigungen anzeigen |
ALTER ROUTINE |
Store Procedure |
BERECHTIGUNGEN FÜR GESPEICHERTE PROZEDUR ÄNDERN |
ROUTINE ERSTELLEN |
GESPEICHERTE PROZEDUR |
BERECHTIGUNGEN FÜR GESPEICHERTE PROZEDUR ERSTELLEN |
AUSFÜHREN |
GESPEICHERTE PROZEDUR |
Berechtigung zum Ausführen gespeicherter Prozeduren |
DATEI |
Dateizugriff auf Server-Host |
Dateizugriffsrechte |
TEMPORÄRE TABELLEN ERSTELLEN |
Serververwaltung |
Temporäre Tabellenberechtigungen erstellen |
TABELLEN SPERREN |
Serververwaltung |
Tabellenberechtigung sperren |
BENUTZER ERSTELLEN |
Serververwaltung |
BENUTZERBERECHTIGUNGEN ERSTELLEN |
PROZESS |
Serververwaltung |
Prozessberechtigungen anzeigen |
RELOAD |
Serververwaltung |
Berechtigung zum Ausführen von Flush-Hosts, Flush-Protokollen, Flush-Berechtigungen, Flush-Status, Flush-Tabellen, Flush-Threads, Aktualisierung, Neuladen und anderen Befehlen |
REPLIKATIONS-CLIENT |
Serververwaltung |
Kopierberechtigungen |
REPLIKATIONS-SLAVE |
Serververwaltung |
Kopierberechtigungen |
DATENBANKEN ANZEIGEN |
Serververwaltung |
Datenbankberechtigungen anzeigen |
HERUNTERFAHREN |
Serververwaltung |
Datenbankberechtigungen schließen |
SUPER |
Serververwaltung |
Kill-Thread-Berechtigung ausführen |
Wie MYSQL-Berechtigungen verteilt werden, das heißt, welche Berechtigungen für Tabellen festgelegt werden können, welche Berechtigungen für Spalten festgelegt werden können usw. Dies kann anhand einer Tabelle in der offiziellen Dokumentation erklärt werden:
权限分布 |
可能的设置的权限 |
表权限 |
‘Select’, ‘Insert’, ‘Update’, ‘Delete’, ‘Create’, ‘Drop’, ‘Grant’, ‘References’, ‘Index’, ‘Alter’ |
列权限 |
‘Select’, ‘Insert’, ‘Update’, ‘References’ |
过程权限 |
‘Execute’, ‘Alter Routine’, ‘Grant’ |
Berechtigungsverteilung