Berechtigungen von MySQL: 1. Globale Berechtigungen, gültig für alle Datenbanken auf dem Server, gespeichert in „mysql.user“; 2. Datenbankberechtigungen, gültig für alle Ziele in der Datenbank, gespeichert in „mysql.db“ und „mysql“. .host“; 3. Tabellenberechtigungen, anwendbar auf alle Spalten in der Tabelle; 4. Spaltenberechtigungen usw.
Die Betriebsumgebung dieses Tutorials: Windows10-System, MySQL8.0.22-Version, Dell G3-Computer.
Datenbankberechtigungen gelten für alle Ziele in einer bestimmten Datenbank. Diese Berechtigungen werden in den Tabellen mysql.db und mysql.host gespeichert. GRANT ALL ON db_name.* und REVOKE ALL ON db_name.* gewähren und widerrufen nur Datenbankberechtigungen.
3. TabellenebeneTabellenberechtigungen gelten für alle Spalten in einer bestimmten Tabelle. Diese Berechtigungen werden in der Tabelle mysql.tables_priv gespeichert. GRANT ALL ON db_name.tbl_name und REVOKE ALL ON db_name.tbl_name gewähren und widerrufen nur Tabellenberechtigungen.
4. SpaltenebeneSpaltenberechtigungen gelten für eine einzelne Spalte in einer bestimmten Tabelle. Diese Berechtigungen werden in der Tabelle mysql.columns_priv gespeichert. Wenn Sie REVOKE verwenden, müssen Sie dieselben Spalten wie die autorisierten Spalten angeben.
5. UnterprogrammebeneDie Berechtigungen CREATE ROUTINE, ALTER ROUTINE, EXECUTE und GRANT gelten für gespeicherte Unterprogramme. Diese Berechtigungen können auf globaler Ebene und Datenbankebene gewährt werden. Darüber hinaus können diese Berechtigungen zusätzlich zu CREATE ROUTINE auf Unterprogrammebene gewährt und in der Tabelle mysql.procs_priv gespeichert werden
Ergänzendes Wissen:1. Testen auf globaler Ebene
Erstellen Sie einen Testkontotest und gewähren Sie ihn Berechtigungen auf globaler Ebene. Wie unten gezeigt: mysql> set global validate_password_policy=0;
mysql> grant select,insert on *.* to test@'%' identified by 'test';
mysql> flush privileges;
Verwenden Sie die folgenden zwei Methoden, um die zum Testen gewährten Berechtigungen abzufragen. Wie unten gezeigt:
mysql> show grants for test; mysql> select * from mysql.user where user='test'G;
2. Test auf Datenbankebene
Erstellen Sie einen Testkontotest und erteilen Sie Berechtigungen auf Datenbankebene. Wie unten gezeigt:mysql> drop user test; mysql> grant select,insert,update,delete on jpcpdb.* to test@'%' identified by 'test@123'; mysql> select * from mysql.user where user='test'G; --可以看到无任何授权。 mysql> show grants for test; mysql> select * from mysql.db where user='test'G;
3. Test auf Tabellenebene
Erstellen Sie einen Testkontotest und erteilen Sie Berechtigungen auf Tabellenebene. Wie unten gezeigt:
mysql> drop user test; mysql> flush privileges; mysql> grant all on jpcpdb.user to test@'%' identified by 'test@123'; mysql> show grants for test; mysql> select * from mysql.tables_privG;
mysql> drop user test; mysql> flush privileges; mysql> grant select (id, name) on jpcpdb.user to test@'%' identified by 'test@123'; mysql> flush privileges; mysql> select * from mysql.columns_priv; mysql> show grants for test;
mysql> DROP PROCEDURE IF EXISTS PRC_TEST; mysql> DELIMITER // mysql> CREATE PROCEDURE PRC_TEST() -> BEGIN -> SELECT * FROM user; -> END // mysql> DELIMITER ; mysql> grant execute on procedure jpcpdb.PRC_TEST to test@'%' identified by 'test@123'; mysql> flush privileges; mysql> show grants for test;
Empfohlenes Lernen:
MySQL-Video-TutorialDas obige ist der detaillierte Inhalt vonWelche Berechtigungen gibt es in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!