MySQL, il noto RDBMS di Oracle, largamente utilizzato in siti e server di tutto il mondo grazie alla sua licenza GNU GPL e alla sua versatilità, può rendersi un degno avversario nel caso in cui rimaniate chiusi fuori dopo aver cambiato la password all’account che utilizzate per amministrare il sistema, o dopo che qualche malintenzionato, o collega burlone, si è divertito a cambiarvi i dati di accesso, per fortuna il problema può essere risolto facilmente.
Per poter modificare una password, anche di Root, in MySQL, sono necessari pochi passaggi da eseguire tutti tramite la shell del server interessato con un account abilitato al riavvio del servizio MySQL, negli esempi che seguono, utilizzeremo il comando sudo per per le macchine basate su Linux e BSD, mentre per Windows basta aprire un terminale dos con i privilegi di amministratore, parte del procedimento è uguale per tutti i sistemi, per questo motivo non creerò flussi da seguire diversi, ma specificherò solo le differenze tra i sistemi.
Primo passo
Per iniziare, creiamo un nuovo file di testo, chiamatelo, per esempio, recupero.sql, al suo interno inseriremo una query e un comando che serviranno a modificare la password di un utente specifico:
[sql]
UPDATE mysql.user SET Password=PASSWORD(‘<Nuova Password>’) WHERE User='<Nome Utante>’;
FLUSH PRIVILEGES;
[/sql]
Considerando l’esempio precedente per l’utente root di MySQL, il file recupero.sql diventerà:
[sql]
UPDATE mysql.user SET Password=PASSWORD(‘<Nuova Password>’) WHERE User=’root’;
FLUSH PRIVILEGES;
[/sql]
Sostituite <Nome Utente> con il nome utente per il quale volete cambiare la password e al posto di <Nuova Password> inserite la password che volete assegnare, ricordatevi che entrambi sono Case Sensitive, quindi le maiuscole e le minuscole verranno considerati come caratteri diversi, preparato il file, assicuratevi di salvarlo in una directory facilmente raggiungibile tramite la shell (per esempio C:\ o /home/nome-utente/ ).
Secondo passo
Assicuratevi di aver terminato il processo di MySQL, non potete continuare se il database è ancora in esecuzione! Ogni sistema ha un suo modo per fermare i servizi o i processi:
Linux/BSD/Mac
Possiamo seguire diverse diverse strade, possiamo fare un kill (uccidere) del processo se conosciamo il suo ID
[bash]
sudo kill
[/bash]
NON utilizzate kill -9!
Al posto di <pid> inserite l’id del processo che potete vedere eseguendo:
[bash]
ps aux | grep mysql
[/bash]
I numeri della seconda colonna sono l’id del processo.
Potete fermare il demone di MySQL utilizzando lo script di init:
[bash]
sudo /etc/init.d/mysql stop
[/bash]
Fatto questo, assicuriamoci che MySQL non sia più in esecuzione con:
[bash]
ps aux | grep mysql
[/bash]
Terzo passo
Ora siamo pronti a utilizzare il file SQL che abbiamo preparato nel primo passo per cambiare la password al nostro utente, per fare questo dovremo eseguire temporaneamente MySQL passando un parametro aggiuntivo con –init-file, questa opzione forza MySQL a eseguire le query presenti nel file.
Linux/BSD/Mac
[bash]
sudo mysqld_safe –init-file=/home/nome-utente/recupero.sql &
[/bash]
Windows (installazione tramite il pacchetto contenente solo i binari di MySQL)
[bash]
C:\mysql\bin\mysqld-nt –init-file=C:\\recupero.sql
[/bash]
Windows (installazione tramite l’installer di MySQL)
[bash]
"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe"–defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini"–init-file=C:\\recupero.sql
[/bash]
Naturalmente sostituite C:\Program Files\MySQL\MySQL Server 5.0 con il percorso dove è installato MySQL, inoltre, dove ci sono due backslash \\ non si tratta di un errore, vanno inseriti così.
Quarto passo
Una volta eseguite le query presenti nel file recupero.sql, il processo dovrebbe terminare da solo, in caso premete e potete riavviare il servizio.