Access denied for user root@localhost

di Lorenzo Neri
Published: Last Updated on

Access denied for user root@localhost: in questo articolo scopriremo come si possa risolvere questo problema spesso legato all’uso di MySQL.

Fra tutti i problemi legati a MySQL e, più in generale, alla gestione di un server web, l’errore “Access denied for user root@localhost (using password: no)” è uno dei più fastidiosi e comuni nel mondo dello sviluppo web. Come risolverlo allora?

Siamo qui per scoprirlo, ma prima: le presentazioni.

Mi chiamo Lorenzo Neri e sono un informatico: questo articolo, così come gli altri che puoi leggere su questo blog, nasce da problematiche che ho affrontato e risolto durante la mia esperienza professionale.

Quale modo migliore se non condividerle con te? Iniziamo.

Access denied for user root@localhost: come risolvere

Per risolvere il problema dell’accesso negato all’utente root esiste una soluzione semplice e immediata.

E indovina un po’?

Sì, è anche la più rischiosa.

Gli strumenti di MySQL permettono infatti di eliminare la password dell’utente root.

Secondo la guida ufficiale, puoi rimuovere la password dell’utente root, rendendolo accessibile senza credenziali.

Tuttavia, si tratta di una pratica estremamente sconsigliata: se qualcuno dovesse accedere al tuo server, la sicurezza dei tuoi dati sarebbe compromessa.

Per questo motivo vedremo una soluzione più articolata, ma decisamente più sicura e affidabile.

Come reimpostare l’utente root in MySQL

Se provi da terminale a eseguire:

 mysql -u root 

Ti apparirà l’errore:

Access denied for user ‘root’@’localhost’ (using password: no)

Vediamo quindi passo per passo come risolvere:

1. Spegni il servizio MySQL:

 service mysql stop 

2. Riavvia MySQL senza privilegi:

 mysqld_safe 

Se la finestra sembra bloccata, aprine un’altra ed esegui:

 mysql -u root 

3. Accedi al database di sistema:

 mysql> use mysql; mysql> select * from user; mysql> truncate table user; mysql> flush privileges; mysql> grant all privileges on *.* to root@localhost identified by 'NUOVA_PASSWORD_SICURA' with grant option;  

Al posto di NUOVA_PASSWORD_SICURA inserisci la password che intendi utilizzare. Puoi anche lasciare la stringa vuota per non avere alcuna password, ma è fortemente sconsigliato.

4. Riavvia MySQL normalmente:

 mysql> quit; kill -KILL [PID mysqld_safe] kill -KILL [PID mysqld] service mysql start 

5. Accedi con la nuova password:

 mysql -u root -pNUOVA_PASSWORD_SICURA 

Se non comparirà più l’errore “Access denied for user root@localhost”, ma riuscirai invece a eseguire query liberamente… avrai finalmente risolto questo problema! 🎉

Continua a scoprire di più con questi articoli!

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più