Table des matières
MySQL : Gestion des utilisateurs et droits
Lister les utilisateurs
SELECT USER,host FROM mysql.user;
Lister les droits d'un utilisateur
SHOW GRANTS FOR 'USER'@'localhost';
Ajouter un utilisateur
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'quelquechose' WITH GRANT OPTION; mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%" IDENTIFIED BY 'something' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES;
Autre méthode :
mysql> INSERT INTO USER VALUES('localhost','monty',PASSWORD('something'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql> INSERT INTO USER VALUES('%','monty',PASSWORD('something'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql> FLUSH PRIVILEGES;
Mot de passe perdu pour le user root de MySQL
Pour pouvoir modifier le mot de passe root de MySQL, il faut pouvoir s'y connecter, Or, si vous n'avez pas le mot de passe root actuel, vous vous retrouvez alors dans une situation kafkaïenne. Si vous connaissez le mot de passe actuel de MySQL et que vous souhaitez juste changer le mot de passe root, vous pouvez sauter cette étape !
Heureusement, il est possible de se connecter à MySQL en échappant à la phase d'authentification (ce qui est fortement recommandé sur un serveur en production).
Pour ce faire il convient d'arrêter le serveur MySQL :
# /etc/init.d/mysql stop
Redémarrer MySQL en passant outre l'identification et en désactivant l'écoute du réseau (afin d'éviter d'être piraté à ce moment donné où MySQL est vulnérable) :
# mysqld --skip-grant-tables --skip-networking &
Réinitialiser le mot de passe
Une fois l'étape précédente réalisée ou si vous souhaitez modifier le mot de passe root (MySQL est installé par défaut sans mot de passe root), connectez-vous à la base de données système (mysql) de MySQL :
# mysql mysql -u rootPuis, saisissez la commande suivante pour mettre à jour le mot de passe root (en remplaçant évidemment nouveaumotdepasse par le votre) :
UPDATE USER SET password=PASSWORD('nouveaumotdepasse') WHERE USER="root";Si vous n'êtes pas passé par la première étape, il suffit de prendre en compte les changement en tapant la commande suivante :
FLUSH PRIVILEGES;
Si par contre vous avez démarré MYSQL à la main en mode dégradé, il suffit de redémarrer le serveur : #/etc/init.d/mysql restart