Voyons comment accorder des permissions (appelées privilèges) à un utilisateur de la base de données MySQL
Par défaut lorsque vous créez un nouvel utilisateur MySQL en utilisant la syntaxe
CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
l'utilisateur ne peut pas faire grand chose. On peut dire qu'il ne peut rien faire, en fait.
Il ne peut pas lire les données d'une base de données existante, et encore moins modifier les données. Et il ne peut même pas créer une nouvelle base de données.
Pour obliger un utilisateur à faire quoi que ce soit, vous devez accorder des privilèges à elle.
Vous pouvez le faire en utilisant le GRANT
commande.
Nous pouvons utiliser GRANT <permission>
, en utilisant les mots clés d'autorisation suivants :
CREATE
DROP
DELETE
INSERT
SELECT
UPDATE
ALL PRIVILEGES
Accorder le privilège de créer de nouvelles bases de données à un utilisateur
GRANT CREATE ON *.* TO '<username>'@'localhost';
Accorder des privilèges à un utilisateur pour créer de nouvelles tables dans une base de données spécifique
GRANT CREATE ON <database>.* TO '<username>'@'localhost';
Accorder le privilège de lire (interroger) une base de données spécifique à un utilisateur
GRANT SELECT ON <database>.* TO '<username>'@'localhost';
Accorder le privilège de lire une table de base de données spécifique à un utilisateur
GRANT SELECT ON <database>.<table> TO '<username>'@'localhost';
Accorder le privilège d'insérer, de mettre à jour et de supprimer des lignes dans une base de données spécifique à un utilisateur
GRANT INSERT, UPDATE, DELETE ON <database>.* TO '<username>'@'localhost';
Accorder le privilège de supprimer des tables dans une base de données spécifique à un utilisateur
GRANT DROP ON <database>.* TO '<username>'@'localhost';
Accorder le privilège de supprimer des bases de données à un utilisateur
GRANT DROP ON *.* TO '<username>'@'localhost';
Accorder tous les privilèges sur une base de données spécifique à un utilisateur
GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'localhost';
Accorder tous les privilèges à un utilisateur
GRANT ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Révoquer un privilège
Exemple pour révoquer le DROP
privilège sur <database>
:
REVOKE DROP ON <database>.* TO '<username>'@'localhost';
Pour révoquer tous les privilèges, exécutez :
REVOKE ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Vous pouvez visualiser les privilèges d'un seul utilisateur en exécutant :
SHOW GRANTS FOR '<username>'@'localhost';