3
mar
Resettare le password ed i privilegi di MySQL
Postato da il 03-03-2010 alle ore 19:49:02


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 :

  1. O caxxo! Ho sputtanato i privilegi sulle tabelle e ora non riesco più a loggarmi su mysql con nessun utente!
  2. 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 :

  1. 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.
  2. 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:

  1. Tecniche avanzate di SQL Injection, quello che non tutti sanno! Qualche tempo fa scrissi una breve (e decisamente incompleta) introduzione...
  2. Usare la serializzazione in PHP per il caching delle query SQL Da quando ho preso un server dedicato (e ne ho...
  3. Il Worm dell’iPhone … il Jailbreak è rischioso? Un po di tempo fa ha fatto scalpore il primo...
  4. Downtime Chi avesse visitato questo blog oggi pomeriggio avrà notato l’errore...
  • tool
    imparato molto
  • gruvio
    ovvio. Intendevo solo che nel tuo blog ho sempre letto invenzioni tue. Trovare una guida tradotta o presa altrove mi ha sorpreso. Quindi prendilo come un complimento. Nella speranza che questo blog che seguo non diventi il solito : " Come installare Ubuntu Synaptic... " . Have a good time...
  • Eheh lo so neanche a me di solito piace "scopiazzare" in giro, ma considerando quante volte questa cosina da niente mi ha salvato il cu*o mi era venuto in mente di riportarla, tutto qua :)
  • gruvio
    non è che hai scoperto il trucchetto :), hai seguito la guida del dev.mysql, semplicmente..
  • Per "scoperto il trucchetto" intendevo che ho scoperto il metodo tramite la guida naturalmente, non ho inventato niente di nuovo XD
    Quando si legge una guida e si impara qualcosa, lo si *scopre* se l'italiano non mi inganna, o no ? :P
blog comments powered by Disqus