Imaginez le scénario suivant, vous êtes en prod, vous faites une mauvaise manipulation sur l’utilisateur root et BOOM, vous n’avez plus accès à MySQL !!! Moi je l’imagine très bien car ça a été mon cas…
Après avoir paniqué quelques secondes en mode « Oh putain le con !!! », une petite recherche sur Google et je tombe sur la doc MySQL expliquant comment faire… Bon il y a à boire et à manger la dedans, donc voici clairement ce qu’il faut faire pour vous sauver.
Il faut avoir accès à la console du serveur, dans mon cas un SSH sur un serveur Debian (avec les supers pouvoirs du root ou en ‘sudo’)…
On arrête le service MySQL
root@serveur$ /etc/init.d/mysql stopOn lance le service MySQL en mode safe (sans mot de passe), puis après quelques secondes CTRL + C
root@serveur$ mysqld_safe --skip-grant-tables & 160330 16:01:10 mysqld_safe Logging to syslog. 160330 16:01:10 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysqlOn se connecte à MySQL en ligne de commande
root@serveur$ mysql -u rootUne fois connecter au client, exécuter les requêtes suivantes en remplaçant le mot de passe
mysql> UPDATE mysql.user SET mysql.password=PASSWORD("VotreNouveauPassword") WHERE mysql.user='root'; mysql> FLUSH PRIVILEGES; mysql> quitOn affiche les processus en cours et on repère le dernier PID MySQL, ici 15589
root@serveur$ ps -aux ... mysql 15589 0.7 2.4 685728 51132 pts/3 Sl 16:01 0:00 /usr/sbin/mysqld --skip-grant-tables ...On termine le processus 15589
root@serveur$ kill 15589 mysqld_safe --skip-grant-tables &160330 16:04:28 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid endedEt on redémarre le service MySQL en mode normal
root@serveur$ /etc/init.d/mysql start
Si vous n’avez pas eu de problème, vous devriez pouvoir vous reconnecter à votre BDD avec votre nouveau mot de passe. J’ai testé cela sur Linux, mais c’est également valable sur Windows, pour le reste un petit tour sur la doc MySQL.
ATTENTION à ce que vous faite dans en mode ‘safe’… 😉