J'ai été mordu à plusieurs reprises par l'utilisateur 'debian-sys-maint' qui est installé par défaut sur les paquets mysql-server installés à partir des référentiels Ubuntu.
En général, je récupère une nouvelle copie de notre base de données de production (qui ne tourne pas sous Debian / Ubuntu) à des fins de dépannage ou de nouveau développement, sans oublier d’exclure la table mysql.user et de perdre ainsi l’utilisateur debian-sys-maint.
Si nous ajoutons de nouveaux utilisateurs mysql pour une raison quelconque, je dois les "fusionner" dans mon environnement de développement, au lieu de simplement superposer la table.
Sans l'utilisateur, mon système semble toujours fonctionnel, mais en proie à des erreurs telles que:
sudo /etc/init.d/mysql restart
Stopping MySQL database server: mysqld...failed.
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
- À quoi sert debian-sys-maint?
- Existe-t-il un meilleur moyen pour les mainteneurs de paquets de faire ce qu'ils essaient de faire?
- Quel est le moyen le plus simple de le restaurer après l'avoir perdu?
- Quel est le jeu de privilèges correct / minimal pour cet utilisateur?
- Cela semble être une mauvaise idée d '' accorder tous les privilèges sur *. * ... '
Modifier
Question supplémentaire - Le mot de passe dans /etc/mysql/debian.cnf est-il déjà haché ou s'agit-il du mot de passe en texte brut? C'est important quand vous allez recréer l'utilisateur et je ne semble jamais réussir du premier coup.
Merci
Réponses:
Une des principales choses pour lesquelles il est utilisé est de dire au serveur de rouler les journaux. Il faut au moins le 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 le statut du serveur. Il est utilisé pour éteindre / recharger le serveur en douceur.Voici la citation du README.Debian
Le meilleur plan consiste simplement à 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 instructions 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.
Le mot de passe n'est pas chiffré ni chiffré lors de l'installation, mais les nouvelles versions de mysql permettent désormais de chiffrer les informations d'identification (voir: https://serverfault.com/a/750363 ).
la source
L’utilisateur debian-sys-maint est par défaut un équivalent racine . Il est utilisé par certains scripts de maintenance sur les systèmes Debian et, en tant qu’effet secondaire, permet aux utilisateurs disposant d’un accès root sur la boîte de visualiser le mot de passe en texte brut dans /etc/mysql/debian.cnf (bon ou mauvais?)
Vous pouvez recréer l'utilisateur en:
Assurez-vous simplement que le mot de passe correspond à celui de /etc/mysql/debian.cnf
la source
Vous pourriez aussi:
Ce qui vous donnera la possibilité de recréer l'utilisateur debian-sys-maint. Les utilisateurs existants et les bases de données sont en sécurité.
la source
Je voulais juste commenter, mais je pense que la syntaxe correcte mérite sa propre entrée. Cela créera l’utilisateur debian-sys-maint :
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 solution sécurisée plus
paranoïaque.la source
/etc/mysql/debian.cnf
lesroot
utilisateurs Linux sont capables de lire le fichier . Et quand quelqu'un peut lire ce fichier, il a déjàroot
accès à la machine et peut arrêter le serveur MySQL et ajouter son propre administrateur système. De plus, le script qui démarre MySQL et d'autres packages ne peut effectuer aucune maintenance, ni aucune autre maintenance. Alors oui, il est aussi sécurisé que jamais. Et utile si vous perdez le mot de passe administrateur MySQL pour le récupérer, sans avoir à le redémarrer en mode non sécurisé. ;-)Si vous devez ajouter l'
debian-sys-maint
utilisateur uniquement à deslogrotate.d
fins spécifiques, vous ne devez pas accorderALL PRIVILEGES
ou leGRANT OPTION
- ceci est une faille de sécurité inutile. Au lieu de cela, vous pouvez simplement ajouter l'utilisateur avec leRELOAD
privilège comme ceci (en supposant que vous accédez à votre base de données en tant queroot
, et que vous remplacez xxxxxx par votre mot de passe)Mise à jour 2019
Cette réponse est peut-être obsolète - veuillez vous reporter aux commentaires ci-dessous portant sur l'opinion
la source
debian-sys-maint
. En outre, je peux confirmer que cela fonctionne comme un charme. À votre santé!debian-sys-maint
utilisateur est également utilisé pour arrêter le serveur. Et aussi pour vérifier les utilisateurs root lors du démarrage du serveur mysql. Vous devez donc au moins accorder des privilèges de sélection sur mysql. * Et des privilèges d’arrêt.Au lieu de
je pense
parce que le mot de passe n'est pas haché ...?
la source
autorisations requises par debian-sys-maint
Les autres réponses ont suffisamment traité de toutes les tâches, à l'exception de l'ensemble minimal d'autorisations requises pour l'utilisateur debian-sys-maint. Beaucoup de réponses ici sont simplement fausses à cet égard, et en fait dangereuses. Ne réduisez pas les privilèges debian-sys-maint (y compris l’option d’octroi) sans avoir lu et compris ce qui suit:
Le responsable Debian n’a pas donné tous les privilèges à l’utilisateur de manière capricieuse. Voici ce qui est requis, où et pourquoi. Certains de ces privilèges sont des sur-ensembles d'autres, mais je vais les énumérer de manière indépendante au cas où vous souhaiteriez personnaliser des éléments et en supprimer l'exigence:
La dernière est, bien sûr, la principale exigence en matière de privilèges. La page de manuel de mysql_upgrade indique que:
AVERTISSEMENT Si vous décidez de réduire les privilèges dont dispose debian-sys-maint, assurez-vous d’être prêt à gérer manuellement les futures mises à jour de sécurité et / ou mises à niveau de Debian qui touchent MySQL. Si vous effectuez une mise à jour sur les paquets MySQL avec un privilège réduit de debian-sys-maint, et si mysql_upgrade ne peut pas se terminer, il se peut que votre base de données reste dans un état indéfini (lecture interrompue). La réduction des privilèges peut ne pas poser de problèmes quotidiens apparents tant qu'une mise à jour n'est pas disponible, alors ne vous fiez pas au fait que vous avez déjà réduit les privilèges sans aucun effet dommageable pour fonder votre sécurité.
la source
En guise de remarque, jetez un coup d'œil à cet article de mysqlperformanceblog pour connaître les raisons pour lesquelles vous souhaitez peut-être désactiver les éléments spécifiques à Debian.
la source
Lorsque vous utilisez MySQL 5.6+, je vous recommande d'utiliser la
mysql_config_editor
commande pour créer une entrée pour l'utilisateur'debian-sys-maint'@'localhost'
à l'aide du mot de passe approprié, ce qui signifie qu'il n'est pas nécessaire que le mot de passe soit stocké en texte brut sur le serveur.mysql_config_editor set --login-path=debian-sys-maint --host=localhost --user=debian-sys-maint --password
Ensuite, le fichier de configuration spécifique à Debian
/etc/mysql/debian.cnf
peut être modifié afin que les informations de nom d’utilisateur et de mot de passe ne soient pas stockées dans le fichier.Enfin, modifiez le fichier logrotate pour MySQL afin qu’il utilise les informations de connexion stockées dans le
~/.mylogin.cnf
fichier au lieu du fichier spécifique à Debian en remplaçant/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf
avec
/usr/bin/mysqladmin --login-path=debian-sys-maint
J'espère que cela t'aides :)
Dave
la source
debian-sys-maint
utilisateur sera-t-il atteint? Que les paquets devraient pouvoir utiliser cet utilisateur / mot de passe pour faire une maintenance du système en tantroot
qu'utilisateur dans le domaine Linux (pas unroot
utilisateur dans MySQL sans que l'administrateur ait besoin d'entrer leroot
mot de passe pour MySQL?/etc/mysql/debian.cnf
pour supprimer les mots de passe et modifier le fichier logrotate afin qu'il fasse référence à utiliser les détails sécurisés. Je ne sais pas si l'utilisateur debian-sys-maint est utilisé pour autre chose, mais si c'est le cas, cela aidera à vous indiquer où Debian utilise ce compte utilisateur en votre nom.