Resettare la password di root in mysql

By | giugno 29, 2014

mysql-icon-180x180Può 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.