Dato il downtime di oggi e la relativa risoluzione, colgo l’occasione per scrivere un breve articolo su come risolvere i seguenti tipi di situazione :
- O caxxo! Ho sputtanato i privilegi sulle tabelle e ora non riesco più a loggarmi su mysql con nessun utente!
- O caxxo! Ho dimenticato la password dell’utenza di mysql!
In entrambi i casi, le parole “O caxxo” riassumono bene lo stato d’animo del povero mal capitato, stato d’animo che conosco benissimo perchè mi è capitato più di una volta (in particolare il caso 1) e, finchè non ho scoperto il trucchetto magico che sto per esporvi, mi ha fatto passare minuti bruttissimi .
Ovviamente la soluzione che sto per indicarvi sarà attuabile se e solo se sono verificate le seguenti condizioni :
- Avete un accesso al terminale del pc in questione, che sia ssh, seriale o magia nera non importa, ma è necessario poter eseguire comandi da shell.
- Dovete poter eseguire comandi con privilegi di root.
Detto questo, la soluzione è abbastanza semplice .
Prima di tutto, fermate il server MySQL, nel caso in cui il classico “/etc/(init.d|rc.d|…)/mysql stop” non funzionasse, dovrete killare il processo, quindi, per vedere in quale file mysql salva il suo pid :
[root@computer ~] grep pid /etc/mysql/my.cnf pid-file = /var/run/mysqld/mysqld.pid
Vediamo quale è il pid :
[root@computer ~] cat /var/run/mysqld/mysqld.pid
26376
E killiamo il processo :
[root@computer ~] kill 26376
Fatto questo, creiamoci un file di testo con il seguente contenuto :
UPDATE mysql.user SET Password=PASSWORD('lavostrapassword') WHERE User='root';GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'lavostrapassword';FLUSH PRIVILEGES;
E chiamiamolo ad esempio resetmysql.sql (che fantasia eh? XD), ovviamente sostituendo il testo “lavostrapassword” con la password che volete (re)impostare.
Fatto ciò, non ci rimane che eseguire :
[root@computer ~] mysqld_safe –init-file=/percorso/di/resetmysql.sql
Aspettate che l’inizializzazione finisca e poi uscite con CTRL+C … riavviando il server MySQL ora dovrebbe tutto andare bene ^^
Spero che questo piccolo articolo possa tornare utile nel caso vi trovaste in questa situazione veramente antipatica XD
Popularity: 9% [?]
Ti potrebbe interessare:
- Tecniche avanzate di SQL Injection, quello che non tutti sanno! Qualche tempo fa scrissi una breve (e decisamente incompleta) introduzione...
- Usare la serializzazione in PHP per il caching delle query SQL Da quando ho preso un server dedicato (e ne ho...
- Il Worm dell’iPhone … il Jailbreak è rischioso? Un po di tempo fa ha fatto scalpore il primo...
- Downtime Chi avesse visitato questo blog oggi pomeriggio avrà notato l’errore...






















Github
Identi.ca
Twitter
Last.fm
LinkedIn
Google Reader