Può capitare a tutti di dimenticare la password di root di MySQL. Fortunatamente, resettare la password di root di MySQL e recuperare il pieno accesso al database è piuttosto semplice (ora ancora di più, grazie ad uno script automatico!). In questa guida vedremo come procedere

Trattazione aggiornata per presentare lo script automatico e gestire meglio il caso in cui l'utente fosse stato creato con un plugin di autenticazione diverso da quello di default.

[risolto] MySQL, password root dimenticata: come reimpostare/resettare password root MySQL? - mysql logo spotlight

nota: questa guida è incentrata sulla procedura da svolgere per resettare la password di root di MySQL. Per la guida all'installazione, vedi quest'altro approfondimento:

» Leggi: Guida: come installare MySQL per Linux (Ubuntu/CentOS)

Reset password root MySQL, Passo 1: Aprire il terminale

Se stai lavorando via SSH su un server MySQL remoto oppure con un'edizione spiccatamente "server" (come Ubuntu Server), sei già davanti alla linea di comando, quindi procedi al Passo successivo.

Se invece hai installato MySQL sul tuo PC locale e stai usando una distribuzione "desktop" con interfaccia grafica, devi avviare il Terminale. Con Ubuntu, ad esempio, procedi così:

  1. clicca sul pulsante con i 3x3 punti in basso a sinistra
  2. cerca terminale per lanciare rapidamente l'omonima applicazione

[risolto] MySQL, password root dimenticata: come reimpostare/resettare password root MySQL? - linux apri terminale

» Leggi anche: Come aprire il terminale di Ubuntu

Reset password root MySQL, Passo 2: Diventare root

Iniziamo ottenendo privilegi massimi, diventando root. Il comando è:

sudo -s

In caso ti fosse richiesta la password, digita quella dell'account corrente.

» Leggi anche: Linux (Ubuntu) e sudo: come disabilitare la richiesta di password quando si eseguono comandi come root

In alternativa, puoi utilizzare il tuo utente "normale" ed anteporre sudo ad ogni comando mostrato di seguito.... ma divenire root immediatamente è molto più comodo.

Reset password root MySQL automaticamente

Nel prosieguo della guida vedremo come resettare la password di root di MySQL manualmente, un passo alla volta. Ma se hai fretta e vuoi fare tutto automaticamente, puoi utilizzare questo script che ho preparato allo scopo:

sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/webstackup/master/script/mysql/password-reset.sh?$(date +%s) | sudo bash

[risolto] MySQL, password root dimenticata: come reimpostare/resettare password root MySQL?

Ti verrà chiesto di indicare, in sequenza:

  1. il nome utente MySQL del quale vuoi resettare la password - batti direttamente Invio per indicare l'utente root)
  2. la nuova password da impostare - se batti direttamente Invio, ne verrà generata una casuale
  3. l'host relativo all'utente in questione - se batti direttamente Invio, verrà utilizzato localhost, che è la situazione più comune

Al termine, potrai connetterti con le credenziali scelte

[risolto] MySQL, password root dimenticata: come reimpostare/resettare password root MySQL?

La procedura è terminata e non devi fare altro. Se però preferisci non usare lo script e fare tutto manualmente, continua a leggere.

Reset password root MySQL, Passo 3: Preparare il file

Per resettare la password di MySQL manualmente dobbiamo innanzitutto preparare un file che contiene l'istruzione di reset. Impartisci questo comando per creare detto file e aprirlo nell'editor:

nano /etc/mysql/reset

» Leggi anche: Guida: modificare i file di configurazione di Linux Ubuntu/CentOS da terminale è facile con "nano" (alternativa a "vi")

Ora copia-incolla queste righe (per incollare in nano devi usare la combinazione da tastiera Ctrl+Alt+V):

ALTER USER 'root'@'localhost' BY 'miaNuovaPasswordDiRoot';

ALTER USER 'root'@'%' BY 'miaNuovaPasswordDiRoot';

(sostituendo a miaNuovaPasswordDiRoot la nuova password di root che desideriamo impostare)

[risolto] MySQL, password root dimenticata: come reimpostare/resettare password root MySQL?

Da notare che i due comandi forniti cambiano la password di MySQL per l'utente root solo per i casi "generali" (connessione da localhost e da qualsiasi altro host). Se avevi configurato anche altri host specifici (come 10.0.0.100), devi accodarli al comando seguendo la sintassi indicata. Ad esempio:

ALTER USER 'root'@'10.0.0.100' IDENTIFIED WITH mysql_native_password BY 'miaNuovaPasswordDiRoot';

Una volta preparato il file, premi Ctrl+O, poi Invio e Ctrl+X per salvare le modifiche e chiudere l'editor.

Reset password root MySQL, Passo 4: Modificare i permessi

Per motivi di sicurezza, riduciamo al minimo i permessi di accesso al file appena creato:

chown mysql:mysql /etc/mysql/reset && chmod u=r,go= /etc/mysql/reset

Reset password root MySQL, Passo 5: Arrestare il servizio

Dobbiamo ora arrestare il servizio di MySQL. Il comando è

service mysql stop

Reset password root MySQL, Passo 6: Impostare la nuova password

Procediamo ad avviare MySQL come applicazione, specificando di leggere ed eseguire le istruzioni contenute nel file che abbiamo creato un attimo fa:

mysqld --user=mysql --init-file=/etc/mysql/reset &

Subito dopo, diamo un'occhiata al log per verificare che l'operazione sia andata a buon fine:

tail -n 100 /var/log/mysql/error.log

Se l'ultima riga legge qualcosa di simile a [Server] /usr/sbin/mysqld: ready for connections, l'operazione è andata a buon fine

[risolto] MySQL, password root dimenticata: come reimpostare/resettare password root MySQL?

Reset password root MySQL, Passo 7: Arrestare l'applicazione

In questo momento, MySQL è in esecuzione come applicazione e non come servizio. Per ripristinare la situazione di funzionamento normale procediamo ad arrestare l'applicazione:

pkill mysql

Consultando il log (tail -n 10 /var/log/mysql/error.log) dovremmo trovare una dicitura simile a [Server] /usr/sbin/mysqld: Shutdown complete

[risolto] MySQL, password root dimenticata: come reimpostare/resettare password root MySQL?

Reset password root MySQL, Passo 8: Riavviare il servizio

Riavviamo infine il servizio di MySQL:

service mysql start

Verifica finale

Arrivati a questo punto, MySQL funziona di nuovo regolarmente e la password di root è stata modificata. Per verificarlo, proviamo a connetterci dalla linea di comando:

mysql -uroot -p'miaNuovaPasswordDiRoot' -h 127.0.0.1

(sostituendo a miaNuovaPasswordDiRoot la nuova password che abbiamo impostato)

Se viene visualizzato il prompt mysql>, significa che l'operazione è andata a buon fine

[risolto] MySQL, password root dimenticata: come reimpostare/resettare password root MySQL?

Prima di concludere, raccomando di eliminare il file che abbiamo utilizzato per il reset:

rm -f /etc/mysql/reset

Conclusioni

In questa guida abbiamo visto come fare il reset della password di MySQL. Si tratta di un'operazione che non dobbiamo eseguire molto spesso, ma prima o poi capita a tutti di dimenticare la password, oppure di dover accedere ad un database amministrato da qualcun altro che non ci ha opportunamente condiviso l'accesso.