Solution 1 :
À quoi sert debian-sys-maint ?
Une chose importante pour laquelle il est utilisé est de dire au serveur de rouler les journaux. Il a besoin au moins du privilège de rechargement et d'arrêt.
Voir le fichier /etc/logrotate.d/mysql-server
Il est utilisé par le /etc/init.d/mysql
script pour obtenir l'état du serveur. Il est utilisé pour arrêter/recharger gracieusement le serveur.
Voici la citation du README.Debian
* MYSQL WON'T START OR STOP?:
=============================
You may never ever delete the special mysql user "debian-sys-maint". This user
together with the credentials in /etc/mysql/debian.cnf are used by the init
scripts to stop the server as they would require knowledge of the mysql root
users password else.
Quel est le moyen le plus simple de le restaurer après l'avoir perdu ?
Le meilleur plan est simplement de ne pas le perdre. Si vous perdez vraiment le mot de passe, réinitialisez-le en utilisant un autre compte. Si vous avez perdu tous les privilèges d'administrateur sur le serveur mysql, suivez les guides pour réinitialiser le mot de passe root, puis réparez le debian-sys-maint
.
Vous pouvez utiliser une commande comme celle-ci pour créer un fichier SQL que vous pourrez utiliser ultérieurement pour recréer le compte.
mysqldump --complete-insert --extended-insert=0 -u root -p mysql | grep 'debian-sys-maint' > debian_user.sql
Le mot de passe dans /etc/mysql/debian.cnf est-il déjà haché
Le mot de passe n'est pas haché/crypté lors de l'installation, mais les nouvelles versions de mysql ont désormais un moyen de crypter les informations d'identification (voir :https://serverfault.com/a/750363).
Solution 2 :
Le debian-sys-maint l'utilisateur est par défaut un équivalent root . Il est utilisé par certains scripts de maintenance sur les systèmes Debian et, comme effet secondaire, permet aux utilisateurs disposant d'un accès root sur la boîte d'afficher le mot de passe en clair dans /etc/mysql/debian.cnf (bon ou mauvais ?)
Vous pouvez recréer l'utilisateur en :
GRANT ALL PRIVILEGES on *.* TO `debian-sys-maint`@`localhost` IDENTIFIED BY 'your password' WITH GRANT OPTION;
Assurez-vous simplement que le mot de passe correspond cela dans /etc/mysql/debian.cnf
Solution 3 :
Vous pouvez également :
sudo dpkg-reconfigure mysql-server-5.0
Ce qui vous donnera la possibilité de recréer l'utilisateur debian-sys-maint. Les utilisateurs et les bases de données existants sont en sécurité.
Solution 4 :
Je voulais juste commenter, mais je pense que la syntaxe correcte mérite sa propre entrée. Cela créera le debian-sys-maint utilisateur :
mysql> GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'plaintextpassword' WITH GRANT OPTION; FLUSH PRIVILEGES;
Si vous avez toujours le fichier /etc/mysql/debian.cnf, utilisez simplement le mot de passe qu'il contient.
N'hésitez pas à proposer une version plus paranoïaque solution sécurisée.
Solution 5 :
Si vous devez ajouter le debian-sys-maint
utilisateur juste pour logrotate.d
fins, vous ne devez pas accorder ALL PRIVILEGES
ou le GRANT OPTION
-- c'est un trou de sécurité géant inutile. Au lieu de cela, vous pouvez simplement ajouter l'utilisateur avec le RELOAD
privilège comme celui-ci (en supposant que vous accédez à votre base de données en tant que root
, et vous remplacez xxxxxx par votre mot de passe)
# add the user with the reload right
GRANT RELOAD on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'xxxxxx';
# reload the rights
FLUSH PRIVILEGES;
# double check
select * from mysql.user;
Mise à jour 2019
Cette réponse n'est peut-être pas à jour -- veuillez consulter les commentaires fortement avisés ci-dessous.