MySQL: Recupera la password di root
by Valentino R.
Ultimo Aggiornamento 11 Febbraio 2004


A chi serve


Con il presente articolo, si vuole dare un aiuto a quanti hanno una memoria "corta". Infatti, molte volte capita che avendo dei database ben strutturati e quindi ben funzionanti, non abbiamo necessità di effettuare nuove modifiche agli stessi e quindi può capitare che con il tempo ci potremmo dimenticare la necessaria password dell'utente "root"

Informazioni necessarie


Come tutti sapete, MySQL è un database server organizzato in modo tale che è possibile creare vari utenti per vari database. Però, in MySQL esiste un utente amministratore, e cioè l'utente denominato "root" che ha di default impostato i privilegi per poter "dominare" all'interno del database server.
Questa procedura, che successivamente illustreremo, consente anche di cambiare, non solo la password di root, ma bensì qualunque altra password presente all'interno del database server, e di alterare qualsiasi informazione presente all'interno dei database.
Le password degli utenti del database server sono conservate all'interno del database denominato "mysql", e precisamente all'interno della tabella "user", insieme anche ad altre informazioni relative all'user. La cosa più semplice sarebbe quella di andare a sbirciare all'interno della tabella e vedere quale sia la password. Molto semplice no!?!?
Il problema è che non è possibile.
1 - Le password degli utenti non esistono! O meglio, quando sono state settate le password di queste ultime sono state archiviate le firme digiatli. Infatti, all'atto dell'autenticazione per la connessione al nostro database, il database server non fa altro che generare una nuova firma digitale con la stringa da noi immessagli e confrontarla con quella archiviata. Quindi senza effettuare alcuna decriptazione della stringa archiviata;
2 - Il database "mysql" è possibile consultarlo solo se si hanno i privilegi dell'utente "root".
Cosa fondamentale per eseguire questa operazione, è quella di avere almeno i privilegi necessari per stoppare e successivamente riavviare il demone del database server.

A lavoro


Come prima cosa bisogna stoppare il database server.


# =====================
# In Windows NT/2000/XP
# =====================
shell> net stop mysql

# =====================
# In ambiente Unix Like
# =====================
shell> kill `cat /mysql-data-directory/hostname.pid`

Riavviare il databse server

Riavviare il database server con l'opzione "--skip-grant-tables".

# =================================
# In Windows NT/2000/XP e Unix Like
# =================================
shell> mysqld --skip-grant-tables
Questa opzione, consente di avviare il database server senza effettuando lo ''skip'' del caricamento della tabella dei dei privilegi. Cio darà la possibilità di accedere a tutti i databases senza rispettare i privilegi, quindi ''tutto a tutti'', comprese le tabelle del database mysql.

Cambiare la password.


# =============================================
# In Windows NT/2000/XP e in ambiente Unix Like
# =============================================
shell> mysqladmin -h -u root password ''

# ========================
#          oppure
# ========================
shell> mysql -u root -D mysql
mysql> UPDATE user SET Password=PASSWORD('mynewpassword') WHERE User='root';
mysql> FLUSH PRIVILEGES;

Riavvio

A questo punto basta riavviare il database server senza la precedente opzione. Quando verrà richiesta la password per l'utente "root", basta inserire la nuova password e tutto funzionerà correttamente.

mappa - disclaimer
Elav-Web le tue soluzioni contattaci
Soluzioni Informatiche Soluzioni Informatiche
Sviluppo software WebBased.
Elav-Web la tua soluzione I partner di Elav-Web news dal mondo IT

Frequent Ask Question


Sei il visitatore n° dal 22 settembre 2003.

Valid robots.txt Valid robots.txt Valid HTML 4.01 Transitional Valid CSS!