Recréer un utilisateur root absent dans Mysql

Je me permets de partager la solution à un problème auquel je me suis heurté lors de la configuration d’un serveur dédié. Ce problème semble être lié à Debian (et donc Ubuntu).

# mysql -u root

m’affichait invariablement un message d’erreur de type

ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)

En principe, l’installation devrait créer un utilisateur root sans mot de passe, mais ça n’a pas été le cas. Pour vous en convaincre (si c’est aussi votre cas), il faut déjà trouver un moyen de se connecter à mysql. En dehors de la solution consistant à faire un skip-grant (je vous laisse le soin de trouver des informations à ce sujet), utile pour un changement de mot de passe root (à condition bien sûr que celui-ci existe), il est possible d’utiliser l’utilisateur fantôme debian-sys-maint propre à Debian dont les identifiants se trouvent dans :

/etc/mysql/debian.cnf

Avec ça, vous devriez pouvoir vous connecter via la commande suivante :

# mysql -u root -pMOTDEPASSE

Attention à ne pas mettre d’espace entre le -p et le MOTDEPASSE.

Puis faire

> use mysql

Pour sélectionner la base principale contenant la configuration de mysql, enfin :

> select * from user

Et là surprise, seul l’utilisateur debian-sys-maint apparaît… On peut donc créer le root manquant en lançant les deux commandes suivantes :

> INSERT INTO user VALUES('localhost','root',PASSWORD('NOUVEAMOTDEPASSE'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',' ',' ',' ',' ','0','0','0','0');
> FLUSH PRIVILEGES;

Si une erreur du nombre de colonne s’affiche, comptez le nombre de Y et N de l’utilisateur debian-sys-maint et mettez autant de Y dans la commande ci-dessus, le nombre de valeurs vides et de 0 reste le même en principe. Il y a d’autres méthodes pour recréer root mais celle-ci est la seule qui a fonctionné sur mon serveur.

Et voilà, si tout se passe bien, mysql répond

Query OK, 1 row affected (0.09 sec)

Puis

Query OK, 0 rows affected (0.03 sec)

Voilà ! Vous avez maintenant un utilisateur root en forme.

Au passage, j’ai cherché pendant pas mal de temps un équivalent gratuit (ou presque) au cPanel et à Plesk, et mon choix s’est porté sur Virtualmin qui a l’air très mature, avec une connexion SSL par défaut (ce qui n’est pas le cas de cPanel alors que les données qui transitent sont ô combien sensibles).

Il ne me reste plus qu’à trouver un serveur RDP digne de ce nom (pas un NXserver qui plante à tout bout de champ) et j’aurai mon Windows Server 2008 :-).

1 commentaire à l'article “Recréer un utilisateur root absent dans Mysql”

  1. Tsivery Tanjona
    20 août 2012 | 14:08

    Merci bcp pour le tuto, ca m’a bcp aider car le mien aussi n’a pas eu de root par defaut,
    Grand merci,
    🙂

Laisser un commentaire