Mot de passe root perdu

Vous avez perdu le mot de passe "root" de votre belle installation de MariaDB !

Note 2021 : Cela ne fonctionne plus avec les versions rĂ©centes de MariaDB car la table mysql.user n'est plus qu'une vue vers une structure plus complexe, il faut obligatoirement passer par un "init_file" pour re-crĂ©er un mot de passe "root". Ce fichier "init_file" peut ĂȘtre exĂ©cutĂ© au dĂ©marrage de MariaDB, avant le dĂ©marrage complet, et permet d'exĂ©cuter des commandes en passant outre Ă  la vĂ©rification des droits. A ne pas laisser entre toutes les mains ... et Ă  bien supprimer du fichier de paramĂ©trage aprĂšs usage !

Pas de panique la procĂ©dure suivante vous sortira de l'embarras (Ă  condition de stopper votre base quelques instants ce qui peut ne pas ĂȘtre Ă©vident pour une base de production ... mais pour celles la vous avez soigneusement sauvegardĂ© les mots de passe dans un gestionnaire spĂ©cialisĂ©).

  • Stopper MariaDB
  • En root lancer lĂ© commande suivante :

mysqld_safe --skip-grant-tables --skip-networking & 
Ici aucun accĂšs ne sera possible aux commandes "classiques" "SET PASSWORD..." ou "ALTER USER ..." il faut mettre Ă  jour directement la table "mysql.user" :

mysql -u root 
UPDATE mysql.user SET authentication_string = PASSWORD('nouveau_mot_de_passe')  
where user = 'root' 
and host = 'localhost'; 
commit; 
\q

Il suffira alors de stopper (gentiment) notre "mysqld_safe" avec la commande : 
mysqladmin -u root shutdown

Puis de relancer MariaDB avec systemctl et se retrouver dans un Ă©tat normal.

Ceci fonctionne parfaitement avec un MariaDB 10.3