Ultimamente mi è capitato di dover accedere ad un vecchio sito in locale che avevo fatto con WordPress, il problema che avevo era di non ricordare la password dell’unico utente che avevo configurato e non avevo voglia di riconfigurarmi un nuovo WordPress con gli stessi plugin per poter riprodurre una situazione analoga. Unica soluzione che avevo era di reimpostare la password dell’utente admin. Di solito si può accedere alla pagina di login e utilizzare il link “ho dimenticato la password”. Ma come fare se il webserver locale è configurato per non mandare mail?
Spulciando un po’ il codice e la documentazione di WordPress, ci sono tanti modi descritti per risolvere il problema, ma tra quelli che prediligo c’è la modalità SQL, che richiede tu abbia le credenziali di accesso al tuo DB, che se non ricordassi sono nel file wp-config.php nella root del sito, e principlamente non richiede la scrittura di codice PHP (almeno evitiamo di scriverlo quando non è realmente necessario :D )!
Questa modalità SQL è molto semplice in quanto WordPress autentica un utente anche accettando una password codificata in MD5 (guardatevi il codice del metodo wp_check_password(), nel file /wp-includes/pluggable.php).
Quindi accediamo alla nostra console di MySQL (di solito utilizzo MySQL Workbench del quale non riesco più a farne a meno), e stabiliamo la connessione alla nostra banca dati, infine, presupponendo di avere un’installazione base di WordPress ci dovremmo ritrovare con delle tabelle con prefisso wp_, quindi eseguiamo subito una bella query di selezione:
select * from wp_users
prendiamo nota dell’ID dell’utente con ruoli di amministrazione, nel mio caso l’ID equivaleva a “1”. Poi eseguiamo la seguente query:
update wp_users set user_pass = md5('mia nuova password') where ID= 1;
Come direbbero i francesi “Les jeux sont fait!”