Utilisateurs et privilèges sous MySQL
Emmanuel Gautier / April 27, 2015
3 min read
L'administration d'une base de données inclue la gestion des utilisateurs et de leurs privilèges. La plupart du temps, une interface graphique, telle que MySQL Workbench ou PHPMyAdmin, est disponible pour réaliser de façon simple les actions liées à cette gestion. Dans ce tutoriel, nous allons voir comment réaliser la gestion des utilisateurs MySQL au moyen de requêtes SQL.
Création d'un utilisateur
Première action, création d'un utilisateur avec un mot de passe. Deux façons de faire sont possibles en fonction de la façon dont vous voulez attribuer le mot de passe au moment de la création de l'utilisateur.
-- Mot de passe en clair dans la requête (pas sécurisé)
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
-- Mot de passe passé sous un algorithme de Hash
SELECT PASSWORD('password'); -- Création du Hash du mot de passe
CREATE USER 'user'@'localhost' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB9900DFG1E6Y89F4';
Renommer un utilisateur
Pour renommer un utilisateur déjà créé, la commande est la suivante.
RENAME USER 'user'@'localhost' TO 'user2'@'localhost';
Changer un mot de passe
Le changement de mot de passe suit la même logique que pour son attribution lors de la création d'un utilisateur. Vous avez plusieurs moyens de le faire selon si vous attribuez le mot de passe déjà hashé ou non.
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('newpassword');
Attribution de privilèges
Avant toute opération d'attribution de privilèges sur une base de données, commençons par créer cette dernière.
CREATE DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Maintenant, attribuons des privilèges à un utilisateur sur cette base de données.
GRANT SELECT, INSERT, UPDATE, DELETE ON `database`.* TO 'user'@'localhost';
Si vous voulez attribuer tout les droits sur une base de données à un utilisateur, il vous suffit d'effectuer la requête suivante :
GRANT ALL ON `database`.* TO 'user'@'localhost';
Maintenant, pour que les nouveaux droits attribués soient pris en compte, il est nécessaire de lancer la requête FLUSH.
FLUSH PRIVILEGES;
Révocation de privilèges
Après avoir attribuer des privilège, révoquons-les. Vous pouvez révoquer l'ensemble des droits d'un utilisateur avec la requêtes suivante.
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';
Vous pouvez également supprimer seulement certains privilèges.
REVOKE DELETE ON database.* FROM 'user'@'localhost';
Suppression Utilisateur
La suppression d'un utilisateur MySQL dépend de la version de MySQL. A partir de la version 5.0.2, la commande suivante suffit à la suppression de l'utilisateur.
DROP USER 'user'@'localhost';
Dans le cas où la version de MySQL est inférieure à 5.0.2, il est obligatoire de révoquer les privilèges de l'utilisateur pour pouvoir le supprimer. Pour plus d'informations, la documentation officielle de MySQL fournie une explication plus détaillée.
Consulting
Si vous recherchez des solutions à un problème ou avez besoin de conseils, je suis là pour vous aider ! N'hésitez pas à réserver un call avec moi pour une session de consulting personnalisée. Discutons de votre situation et trouvons ensemble la meilleure solution à implémenter.
Articles sur le même sujet
MySQL Docker Image pour les Mac ARM M1
Le problème avec les Apple M1 et les Apple M2 est que de nombreux logiciels ne sont encore pas compatible avec la microarchitecture ARMv8 comme les images officielles Docker pour MySQL par exemple.
Creer un serveur Linux, Nginx, MySQL, PHP
Apache n'est pas le seul serveur HTTP existant pour desservir des applications écrites en PHP, de nombreux autre existent dont Nginx. Dans le cas de l'utilisation de Nginx pour desservir des applications PHP on appellera cela une pile LEMP pour Linux, Nginx, Mysql et PHP.
Creer un serveur Linux, Nginx, MySQL, PHP
Apache n'est pas le seul serveur HTTP existant pour desservir des applications écrites en PHP, de nombreux autre existent dont Nginx. Dans le cas de l'utilisation de Nginx pour desservir des applications PHP on appellera cela une pile LEMP pour Linux, Nginx, Mysql et PHP.
Articles mis en avant
Comment activer la vérification de typage pour Python dans VSCode
Python supporte désormais le [type hints](https://docs.python.org/3/library/typing.html). Dans cet article, nous allons voir comment avoir de l'IntelliSense pour le typage ainsi qu'avoir les erreurs de typage sur Visual Studio Code.
Comment gérer l'internationalisation avec NextJS SSG
Générer statiquement un site avec le framework NextJS pour différentes langues n'est pas si simple.
Installer et configurer un serveur DNS avec Bind9 sous Linux
Un service DNS (Domain Name Service) sert à la résolution de noms de domaine en une adresse IP ou une autre ressource. Ce service est utile notamment pour naviguer sur internet pour ne pas avoir à connaître les IPs des sites web.