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.