Déclaration GRANT de MySQL
L'instruction GRANT
de MySQL est utilisée pour attribuer des privilèges aux comptes d'utilisateurs MySQL. Il définit les opérations que les utilisateurs peuvent effectuer sur les objets de la base de données, tels que les tableaux et les vues, garantissant ainsi un accès contrôlé à la base de données.
Utilisation
L'instruction GRANT
est utilisée lorsque vous devez accorder à des utilisateurs spécifiques des autorisations d'exécuter certains types d'opérations SQL. Il permet de gérer les droits des utilisateurs de manière efficace et sécurisée.
GRANT privileges
ON database_name.table_name
TO 'user'@'host'
[IDENTIFIED BY 'password'];
Dans cette syntaxe, privileges
représente les autorisations accordées, database_name.table_name
spécifie l'étendue, user
est le nom d'utilisateur MySQL et host
est l'emplacement à partir duquel l'utilisateur se connecte. Notez que la clause IDENTIFIED BY 'password'
n'est applicable que lors de la création d'un nouvel utilisateur. Dans MySQL 8.0 et les versions ultérieures, il est généralement recommandé d'utiliser CREATE USER
suivi de GRANT
pour la création d'utilisateurs et l'attribution de privilèges.
Exemples
1. Octroi de privilèges de base
GRANT SELECT, INSERT
ON mydb.mytable
TO 'user1'@'localhost';
Cet exemple accorde les privilèges SELECT
et INSERT
sur mydb.mytable
à user1
en se connectant à partir de localhost
.
2. Octroi de tous les privilèges à une base de données
GRANT ALL PRIVILEGES
ON mydb.*
TO 'user2'@'192.168.1.1';
Ici, user2
se voit accorder tous les privilèges sur l'ensemble de la base de données mydb
à partir de l'hôte 192.168.1.1
.
3. Octroi de privilèges avec un mot de passe
GRANT SELECT, UPDATE
ON mydb.mytable
TO 'user3'@'%' IDENTIFIED BY 'securepassword';
Cette instruction accorde à SELECT
et UPDATE
des privilèges sur mydb.mytable
à user3
à partir de n'importe quel hôte (%
), en définissant un mot de passe spécifique. L'utilisation de %
permet d'établir des connexions à partir de n'importe quel hôte, ce qui peut avoir des répercussions sur la sécurité.
Informations complémentaires
Privilèges globaux
Pour accorder des privilèges globaux qui s'appliquent à toutes les bases de données, utilisez la syntaxe ON *.*
. Cela permet d'accorder globalement les privilèges spécifiés.
Révocation des privilèges
Pour révoquer des privilèges, utilisez la déclaration REVOKE
:
REVOKE privileges
ON database_name.table_name
FROM 'user'@'host';
Cette opération supprime les privilèges spécifiés pour l'utilisateur.
Conseils et bonnes pratiques
- Limitez les privilèges. N'accordez que les privilèges nécessaires aux utilisateurs afin de minimiser les risques de sécurité.
- Utilisez des noms d'hôtes spécifiques. Dans la mesure du possible, spécifiez des noms d'hôtes ou des adresses IP pour restreindre l'accès, plutôt que d'utiliser
%
pour tous les hôtes. - Gérez vos mots de passe en toute sécurité. Utilisez toujours des mots de passe forts et uniques lorsque vous créez des comptes d'utilisateurs.
- Révisez régulièrement les autorisations. Auditez et révoquez périodiquement les privilèges inutiles afin de maintenir une sécurité optimale. Utilisez le tableau
mysql.user
ou les vues du schéma d'information pertinent pour examiner les privilèges des utilisateurs existants. - Modifications du document. Conservez un registre de toutes les déclarations
GRANT
délivrées pour faciliter le suivi des autorisations.