MySQL password recovery on CentOS7

Als je vroeger per ongeluk het root wachtwoord was vergeten van MySQL kon je altijd de hulp inschakelen van het mysql_safe commando. Helaas werkt dit niet meer op systemen die gebruik maken van systemd, waaronder CentOS7. Je zal namelijk de foutmelding “command not found” krijgen wanneer je mysql_safe probeert aan te roepen. In deze post zal worden uitgelegd hoe je alsnog het root wachtwoord kan wijzigen zonder mysql_safe maar met systemd.

Allereerst moeten de MySQL daemon worden gestopt.

systemctl stop mysqld

 
Stel de MySQL environment option in zodat de grant tables worden overgeslagen tijdens het opstarten van MySQL.

systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

 Start de MySQL daemon en open de MyQL CLI.

systemctl start mysqld
mysql

 Voer onderstaande querys uit om het root wachtwoord van MySQL aan te passen. Vergeet niet om “PASSWORD_HERE” aan te passen naar een zelf gekozen wachtwoord.

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('PASSWORD_HERE') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
mysql> quit

 Stop de MySQL deamon weer en verwijder de eerder ingestelde MySQL environment.

systemctl stop mysqld
systemctl unset-environment MYSQLD_OPTS

 Start nu weer de MySQL daemon en je kan weer inloggen met de door jouw gekozen root wachtwoord!

systemctl start mysqld
mysql -p