Access denied for user root@localhost

di Lorenzo Neri
19 visualizzazioni

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 comunque a ciò che concerne un server web, l’“Access denied for user root@localhost (using password: no)” è uno che può dare più grattacapi nel mondo dello sviluppo web. Come risolvere allora?

Siamo qui per scoprirlo, ma prima: le presentazioni.

Mi chiamo Lorenzo Neri e sono un informatico: questo articolo, così come quelli che puoi trovare su questo blog, nasce da problematiche a cui ho cercato di apporre una soluzione nel corso della mia carriera professionale.

Quale modo migliore se non realizzare articoli come questo che stai leggendo?

Incominciamo.

Access denied for user root@localhost: come risolvere

Per risolvere il problema dell’accesso negato all’utente root, abbiamo la soluzione più semplice e più immediata di tutte.

E indovina un po’?

Eh già, è anche la più controindicata.

C’è una cosa che è permessa dagli strumenti di MySQL: ovvero di eliminare la password.

Stando a ciò che concerne la guida ufficiale puoi eliminare la password dell’utente “root” lasciandolo di libero utilizzo senza credenziali.

La pagina che ti ho linkato un paragrafo fa, permette di eliminare la password dell’utente in questione in base al sistema operativo da te utilizzato, tuttavia è una cosa particolarmente rischiosa perchè beh… Se qualcuno lo scopre sono affaracci tuoi.

Perciò, possiamo cercare una soluzione più travagliata, ma molto molto più sicura e funzionale allo scopo.

Come re-impostare l’utente root per il tuo database MySQL

Se provassi, tramite terminale ad eseguire il comando “mysql -u root” dovresti ottenere qualcosa come:

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

Il primo step, consiste nel spegnere il servizio MySQL lanciando il seguente comando:

service mysql stop

Il secondo passo invece, è quello di far ripartire MySQL senza alcun privilegio con il seguente comando:

mysqld_safe

Nel caso in cui la finestra sembrasse ferma, aprine una nuova e lancia il seguente comando:

mysql -u root

Ti apparirà un editor di testo.

Siamo giunti al quarto punto dove potrai finalmente re-impostare tutto ciò che concerne lo user “root” per il tuo DB.

Inserisci i seguenti comandi, uno per volta non appena finisce l’esecuzione del precedente:

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

Ovviamente il valore scritto in caps-lock immagino tu sappia bene che cosa sia 😀

Ah! Giusto!

Nel caso non volessi NESSUNA password, ma te lo sconsiglio, puoi lasciare quel campo come stringa vuota.

Infine, ultimo tassello, consiste nel chiudere le due finestre terminale aperte prima e far ri-partire MySQL come sempre, ovvero:

mysql> quit;
kill -KILL [PID del processo legato a mysqld_safe]
kill -KILL [PID del processo legato a mysqld]
service mysql start

Una volta atteso il riavvio, dovresti lanciare il seguente comando:

mysql -u root -pLA_TUA_PASSWORD_NUOVA_CHE_NON_TI_DEVI_DIMENTICARE

Se non apparirà il messaggio “Access denied for user root@localhost” ma al contrario potrai eseguire query liberamente… Avrai risolto una volte per tutte questo fastidioso 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ù