Ajouter ou réparer l'utilisateur debian-sys-maint pour MariaDB/MySQL

L'utilisateur debian-sys-maint est créé par Debian pour lui permettre d'effectuer des tâches de maintenance sur le serveur MariaDB/MySQL. En principe, cet utilisateur est automatiquement créé lors de l'installation des paquets MariaDB/MySQL. Il arrive parfois lors d'une mise à jour ou comme moi lors d'une installation manuelle de mariadb-server que le mot de passe de cet utilisateur est modifié ou simplement, debian-sys-maint n'est pas créé. Voici un petit tuto pour vous expliquer comment le créer ou le modifier pour que vos tâches de maintenance effectués par Debian sur votre serveur MariaDB/MySQL se fassent sans soucis et surtout sans erreur.

Pré-requis

Ce correctif a été testé sur Debian 9 (Stretch), il fonctionne aussi sur Debian 10 (Buster). Toutes les commandes suivantes s'exécutent dans un terminal en ligne de commande.

Difficulté
Facile

Je parle principalement de MariaDB, mais si vous utilisez MySQL, les fichiers et les commandes sont les mêmes !

Le fichier /etc/mysql/debian.cnf

Lors de l'installation d'un serveur MariaDB ou MySQL, Debian crée un mot de passe aléatoire pour l’utilisateur debian-sys-maint, et inscrit ce mot de passe dans le fichier de configuration /etc/mysql/debian.cnf :

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = mot-de-passe
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = mot-de-passe
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

Il est important de vérifier qu'aux lignes user, c'est bien debian-sys-maint qui y est bien présent.

Petit test pour vérifier si debian-sys-maint est bien paramétré

En premier lieu, il convient de vérifier si l'utilisateur debian-sys-maint est bien installé sur votre système Debian. Pour cela nous utilisons cette petite ligne de commande :

mysql -u debian-sys-maint -p"$(cat /etc/mysql/debian.cnf | grep password | head -n 1 | awk -F= '{ gsub(/[ \t]+/, "", $2); print $2 }')"

Si vous obtenez un message du genre :

ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)

il est clair que vous avez un problème de paramétrage avec votre utilisateur debian-sys-maint.

Création / modification de debian-sys-maint

Nous allons, dans un premier temps, vérifier si l'utilisateur debian-sys-maint est présent dans le système. Pour cela, nous nous connectons au serveur MariaDB / MySQL via une ligne de commande

mysql -u root -h localhost -p

Cette commande vous demandera le mot de passe root, entrez le mot de passe et appuyez sur Entrée

Dans les dernières version de Debian/Ubuntu, le mot de passe n’est pas nécessaire lorsque l’on est root sur la machine et que l’on veut se connecter avec l’utilisateur root de MySQL. L’argument -p n’est donc pas nécessaire.

Savoir si l'utilisateur debian-sys-maint existe

Pour vérifier si l'utilisateur debian-sys-maint est bien présent, nous allons simplement lister les utilisateurs enregistrés avec la ligne de commande suivante :

SELECT user,host FROM mysql.user;

ensuite, nous consultons le tableau retourné par le serveur MySQL qui devrai ressembler à ceci :

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| user1            | %         |
| user2            | %         |
| user3            | %         |
| root             | 127.0.0.1 |
| user4            | localhost |
| debian-sys-maint | localhost |
| user5            | localhost |
| user6            | localhost |
| user7            | localhost |
| root             | localhost |
+------------------+-----------+
10 rows in set (0.00 sec)

Si debian-sys-maint est présent dans la liste vous pouvez passer directement à la section "Mise à jour du mot de passe".

Création de l'utilisateur debian-sys-maint

Comme l'utilisateur debian-sys-maint n'existe pas, nous allons le créer avec la commande MySQL suivante qui créera en même temps le nouveau mot de passe :

GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'nouveau_mot_de_passe';
FLUSH PRIVILEGES;

Modification du mot de passe de l'utilisateur debian-sys-maint

Si l'utilisateur est présent dans le système, nous allons simplement attribuer un nouveau mot de passe à l'utilisateur debian-sys-maint avec la commande MySQL suivante :

SET PASSWORD [FOR 'debian-sys-maint'@'localhost'] = PASSWORD('nouveau_mot_de_passe');

Couper la connexion au serveur MySQL

Pour quitter la connexion au serveur MySQL et revenir au prompt classique de votre terminal, rien de plus simple, c'est la commande suivante :

exit

Mettre à jour le fichier /etc/mysql/debian.cnf

Maintenant nous allons mettre à jour les données contenues dans le fichier /etc/mysql/debian.cnf en éditant celui-ci avec un éditeur de texte genre nano ou vim et nous allons modifier les mots de passe :

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = nouveau_mot_de_passe
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = nouveau_mot_de_passe
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

Notes de version

  • [28/05/2020] : Création de l'article

Auteurs et sources