Può capitare a volte di dover resettare la password di root in mysql, poichè ve la siete dimenticata oppure avete settato erroneamente i privilegi e quindi non potete più effettuare modifiche.Con pochi semplici passaggi, è possibile ripristinare sia password che permessi.
La sintassi che segue è riferita ad un server MySQL che gira in ambiente Linux. Per MySQL sotto Windows, il ripristino della password di root è estremamente semplice grazie ai tool grafici forniti in corredo.
L’unica cosa indispensabile, per eseguire l’operazione di ripristino, è conoscere la password di root del server Linux, infatti è necessario entrare in console, anche remota (ssh o telnet) con privilegi d’amministratore.
Una volta loggati come root, bisogna stoppare il processo MySQL con il comando:
/etc/init.d/mysql stop
oppure se non disponibile l’rc scrip si può procedere come segue:
kill `cat /mysql-data-directory/host_name.pid`
dove mysql-data-directory è la directory in cui sono contenuti i dati del server (normalmente /var/lib/mysql), mentre host_name.pid è il file che contiene il pid del server mysql il esecuzione.
Terminato il demone MySQL, bisogna rilanciarlo con il comando
mysqld_safe --skip-grant-tables &
a questo punto il demone riparte ignorando la tabella dei permessi, e possiamo accedere in mysql console come segue:
mysql -u root
e ripristinare la password:
mysql>UPDATE mysql.user SET Password=PASSWORD('nuova password') WHERE User='root';
oppure ripristinare i permessi:
mysql>GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'nuova password' WITH GRANT OPTION;
se la precedente operazione non da errori, dobbiamo confermare le modifiche con il comando:
mysql>FLUSH PRIVILEGES;
Terminate tutte le modifiche necessarie, possiamo riavviare normalmente mysql, ed usarlo con la nuova password.