Dimenticare le password non รจ cosa cosรฌ infrequente, anzi. Spesso รจ possibile ovviare a questa dimenticanza in modo molto semplice (si pensi ad esempio agli strumenti di “recupero password” comuni in molte web-application), altre volte la cosa รจ piuttosto complicata.
Recentemente mi รจ capitato di dover aiutare un cliente distratto che si era dimenticato la password di root per la gestione di MySQL installato sul suo server. Accedendo alla console come root, infatti, riceveva questo messaggio:
Access denied for user 'root'@'localhost' (using password: NO)
Il problema รจ che, per cambiare la password di amministrazione di MySQL, รจ necessario prima accedere come amministratore!
In realtร , quest’ultima affermazione รจ vera solo in parte, poichรฉ avendo accesso alla root del server, abbiamo comunque il controllo su MySQL e quindi possiamo seguire strade alternative per recuperare l’accesso.
In questo articolo vedremo, appunto, come reimpostare la password di root di MySQL che ci siamo dimenticati; requisito essenziale รจ avere accesso al server con privilegi di amministrazione.
Accediamo quindi alla shell del nostro server. Una volta effettuato l’accesso, stoppiamo il processo mysql. Per far questo, dobbiamo lanciare il seguente comando da terminale:
/etc/init.d/mysqld stop
Fatto questo, dobbiamo riavviare, sempre da Shell, il processo precedentemente bloccato, utilizzando la direttiva --skip-grant-tables
. Essa permetterร di accedere all’applicazione senza che il sistema richieda una password per l’autenticazione:
mysqld_safe --skip-grant-tables &
Se stiamo operando in locale sul server (cioรจ solo se abbiamo un accesso diretto e fisico con la macchina), รจ bene anche bloccare l’accesso remoto:
mysqld_safe --skip-grant-tables --skip-networking &
Una volta avviato il servizio in questa modalitร , possiamo accedere a MySQL con:
mysql -u root
Bene, siamo dentro! Ora possiamo reimpostare la nostra password di root:
USE mysql;
UPDATE user SET password=PASSWORD("nuova_pass") WHERE User='root';
FLUSH PRIVILEGES;
exit;
ร molto importante, dopo aver settato la nuova password, effettuare un FLUSH dei privilegi!
Ora non resta che riavviare il demone di MySQL:
/etc/init.d/mysqld restart
Una volta riavviato, proviamo ad accedere con le nuove credenziali… se tutto รจ andato per il meglio, dovrebbe funzionare!
Considerazioni Finali
Ricordiamo che la gestione delle password, soprattutto per l’account root di MySQL, รจ fondamentale per garantire la sicurezza del nostro server. ร buona pratica utilizzare password complesse e, se possibile, considerare l’implementazione di procedure di backup delle credenziali. Inoltre, mantenere aggiornato il sistema e MySQL non solo aumenta la sicurezza, ma previene anche problemi futuri che potrebbero rendere difficoltosa la gestione degli accessi.