Maison > Article > base de données > Quelles autorisations y a-t-il dans MySQL
Autorisations de mysql : 1. Autorisations globales, applicables à toutes les bases de données du serveur, stockées dans "mysql.user" ; 2. Autorisations de base de données, applicables à toutes les cibles de la base de données, stockées dans "mysql.db" et " mysql .host" ; 3. Autorisations de table, applicables à toutes les colonnes de la table ; 4. Autorisations de colonne, etc.
L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.22, ordinateur Dell G3.
Classification spécifique des autorisations
1 Niveau global
Les autorisations globales s'appliquent à toutes les bases de données d'un serveur donné. Ces autorisations sont stockées dans la table mysql.user. GRANT ALL ON *.* et REVOKE ALL ON *.* accordent et révoquent uniquement les autorisations globales.
2. Niveau de base de données
Les autorisations de base de données s'appliquent à toutes les cibles d'une base de données donnée. Ces autorisations sont stockées dans les tables mysql.db et mysql.host. GRANT ALL ON db_name.* et REVOKE ALL ON db_name.* accordent et révoquent uniquement les autorisations de base de données.
3. Niveau table
Les autorisations de table s'appliquent à toutes les colonnes d'une table donnée. Ces autorisations sont stockées dans la table mysql.tables_priv. GRANT ALL ON db_name.tbl_name et REVOKE ALL ON db_name.tbl_name accordent et révoquent uniquement les autorisations de table.
4. Niveau de colonne
Les autorisations de colonne s'appliquent à une seule colonne dans un tableau donné. Ces autorisations sont stockées dans la table mysql.columns_priv. Lors de l'utilisation de REVOKE, vous devez spécifier les mêmes colonnes que les colonnes autorisées.
5. Niveau de sous-programme
Les autorisations CREATE ROUTINE, ALTER ROUTINE, EXECUTE et GRANT s'appliquent aux sous-programmes stockés. Ces autorisations peuvent être accordées au niveau global et au niveau de la base de données. De plus, en plus de CREATE ROUTINE, ces autorisations peuvent être accordées au niveau du sous-programme et stockées dans la table mysql.procs_priv
Connaissances supplémentaires :
1 Tests au niveau global
Créer un test de compte de test et accorder. Autorisations de niveau global. Comme indiqué ci-dessous :
mysql> set global validate_password_policy=0; mysql> grant select,insert on *.* to test@'%' identified by 'test'; mysql> flush privileges;
Utilisez les deux méthodes suivantes pour interroger les autorisations accordées pour tester. Comme indiqué ci-dessous :
mysql> show grants for test; mysql> select * from mysql.user where user='test'G;
2. Test au niveau de la base de données
Créez un test de compte de test et accordez des autorisations au niveau de la base de données. Comme indiqué ci-dessous :
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 au niveau de la table
Créez un test de compte de test et accordez des autorisations au niveau de la table. Comme indiqué ci-dessous :
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;
4. Test au niveau de la colonne
Créez un test de compte de test et accordez des autorisations au niveau de la colonne. Comme indiqué ci-dessous :
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;
5. Test de niveau de sous-programme
Créez un test de compte de test et accordez des autorisations au niveau du sous-programme. Comme indiqué ci-dessous :
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;
mysql> sélectionnez * depuis mysql.procs_priv où User='test';
Résumé
Si vous avez besoin d'afficher les autorisations accordées à l'utilisateur, vous devez afficher les autorisations accordées à partir de ces cinq niveaux. Vérifiez les autorisations accordées à chaque niveau une par une de haut en bas ou de petit vers le haut.
Une base de données est un système général de traitement de données pour une unité ou un domaine d'application. Elle stocke un ensemble de données pertinentes appartenant aux entreprises et aux services commerciaux, aux groupes et aux individus. Les données de la base de données sont établies dans une perspective globale et organisées, décrites et stockées selon un certain modèle de données. Sa structure repose sur la connexion naturelle entre les données, qui peuvent fournir tous les chemins d'accès nécessaires, et les données ne sont plus ciblées sur une application spécifique, mais sont orientées vers l'ensemble de l'organisation et présentent des caractéristiques structurelles globales.
Apprentissage recommandé : Tutoriel vidéo mysql
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!