Vidéo: Sécurité Sql Server : Gestion des Rôles de Base de Données 2024
Lorsque MySQL est installé, il crée automatiquement une base de données appelée mysql . Toutes les informations utilisées pour protéger vos données sont stockées dans cette base de données, notamment les noms de compte, les noms d'hôtes, les mots de passe et les privilèges.
Les privilèges sont stockés dans des colonnes. Le format de chaque nom de colonne est privilège _priv, dans lequel privilège est un privilège de compte spécifique. Par exemple, la colonne contenant les privilèges ALTER est nommée alter_priv. La valeur de chaque colonne de privilège est Y ou N, c'est-à-dire oui ou non.
Par exemple, dans la table user, il y aurait une ligne pour un compte et une colonne pour alter_priv. Si le champ de compte pour alter_priv contient Y, le compte peut être utilisé pour exécuter une instruction ALTER. Si alter_priv contient N, le compte n'a pas le privilège d'exécuter une instruction ALTER.
La base de données mysql contient les tables suivantes qui stockent les privilèges:
-
table user : Cette table stocke les privilèges qui s'appliquent à toutes les bases de données et tables. Il contient une ligne pour chaque compte valide qui inclut le nom d'utilisateur, le nom d'hôte et le mot de passe des colonnes. Le serveur MySQL rejette une connexion pour un compte qui n'existe pas dans cette table.
-
db table: Cette table stocke les privilèges qui s'appliquent à une base de données particulière. Il contient une ligne pour la base de données, qui donne des privilèges à un nom de compte et un nom d'hôte. Le compte doit exister dans la table utilisateur pour les privilèges à accorder. Les privilèges indiqués dans la table utilisateur remplacent les privilèges de cette table.
Par exemple, si la table utilisateur a une ligne pour le concepteur de compte qui donne les privilèges INSERT, le concepteur peut insérer dans toutes les bases de données. Si une ligne dans la table db affiche N pour INSERT pour le compte de concepteur dans la base de données PetCatalog, la table utilisateur l'annule et le concepteur peut insérer dans la base de données PetCatalog.
-
table host : Cette table contrôle l'accès à une base de données, en fonction de l'hôte. La table hôte fonctionne avec la table db. Si une ligne dans la table db a un champ vide pour l'hôte, MySQL vérifie la table hôte pour voir si la base de données a une ligne là. De cette façon, vous pouvez autoriser l'accès à une base de données à partir de certains hôtes mais pas d'autres.
Par exemple, supposons que vous ayez deux bases de données: db1 et db2. La base de données db1 contient des informations sensibles. Vous ne souhaitez donc que voir certaines personnes. La base de données db2 contient des informations que vous souhaitez que tout le monde puisse voir. Si vous avez une ligne dans la table db pour db1 avec un champ hôte vide, vous pouvez avoir deux lignes pour db1 dans la table hôte.
Une ligne peut accorder tous les privilèges aux utilisateurs se connectant à partir d'un hôte spécifique, alors qu'une autre ligne peut refuser les privilèges aux utilisateurs se connectant depuis n'importe quel autre hôte.
-
tables_priv table: Cette table stocke les privilèges qui s'appliquent à des tables spécifiques.
-
columns_priv table: Cette table stocke les privilèges qui s'appliquent à des colonnes spécifiques.
Vous pouvez voir et modifier les tables dans mysql directement si vous utilisez un compte qui a les privilèges nécessaires. Vous pouvez utiliser des requêtes SQL telles que SELECT, INSERT et UPDATE. Si vous accédez à MySQL via votre employeur, un client ou une société d'hébergement Web, vous n'avez probablement pas de compte avec les privilèges nécessaires.