
Réparer l’utilisateur debian-sys-maint de MySQL/MariaDB

Lors de ma première migration de dossier MySQL d’un serveur à un autre, j’ai eu quelques difficultés, avec des erreurs multiples, dont certaines liées à l’utilisateur ‘debian-sys-maint’. C’est la première fois qu’il m’interpellait, j’ai donc du chercher qui il était, et surtout, comment le « réparer ».
L’erreur en question était la suivante :
1 2 3 4 5 |
/etc/init.d/mysql reload [....] Reloading MySQL database server: mysqld/usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)' |
Oui donc tout le monde se souvient que je suis un grand adorateur de Debian. En fait à l’installation de Debian, et de Mysql ensuite, il crée cet utilisateur pour pouvoir procéder à de la maintenance. Oui mais comme j’ai restauré le dossier de mon ancien serveur, le mot de passe associé à l’utilisateur en question n’est plus le bon. Gênant.
Fort heureusement, il est possible de retrouver ce mot de passe dans un fichier bien précis, /etc/mysql/debian.cnf :
1 2 3 4 5 6 7 8 9 10 11 12 |
# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = randomshit socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = randomshit socket = /var/run/mysqld/mysqld.sock basedir = /usr |
Bien entendu, on ne peut pas récupérer le mot de passe en clair dans la base de données. Par contre, on peut modifier le mot de passe de l’utilisateur pour lui indiquer celui de ce fichier. Et bien sûr, randomshit n’est pas un mot de passe valable, c’est juste pour la démo.
NB : Je parle principalement de MySQL, mais rappelez-vous, si vous utilisez MariaDB, les fichiers et les commandes sont les mêmes !
Donc, pour accéder à son serveur MySQL, il nous faut connaitre le mot de passe root. Vous connaissez votre mot de passe root, j’espère !
1 2 |
mysql -u root -p Enter password: |
Une fois connecté, la suite de commande parait certes un peu barbare quand on passe son temps sous PHPMyAdmin, mais pourtant très simple, pour peu qu’on parle un peu anglais :
1 2 3 4 |
mysql>GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'randomshit'; mysql>FLUSH PRIVLEGES; mysql>exit mysql>bye |
La commande FLUSH PRIVILEGES est nécessaire pour recharger les droits, dont les modifications ne sont pas prises en compte en temps réel. Pour vérifier qu’il n’y aura plus d’erreurs, il suffit d’essayer de redémarrer le serveur MySQL/MariaDB :
1 2 3 4 5 |
service mysql restart [ ok ] Stopping MySQL database server: mysqld. [ ok ] Starting MySQL database server: mysqld .. [info] Checking for tables which need an upgrade, are corrupt or were not closed cleanly .. |
Et voilà ! Donc la prochaine fois que vous aurez à transférer des bases de données, vous n’aurez plus peur de cette erreur.