Introduzione

In questo tutorial ti mostreremo come reimpostare ( o cambiare) una password di root di MySQL nel caso in cui l'hai dimenticata. Questa guida dovrebbe funzionare con qualsiasi distribuzione Linux moderna come Ubuntu 18.04 e CentOS 8.

Prerequisiti

Prima di continuare con i passaggi seguenti, assicurarsi di aver effettuato l'accesso al server come utente con privilegi sudo.

Se volete procedere su un server in remoto continuate a leggere, altrimenti se lavorate sul vostro computer locale saltate il primo paragrafo "Connessione al Server" e leggere il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Identificare la versione del server

A seconda della versione del server MySQL o MariaDB in esecuzione sul sistema, sarà necessario utilizzare diversi comandi per recuperare la password di root.

Puoi trovare la versione del tuo server emettendo il seguente comando:

mysql --version

Se hai installato MySQL nel tuo sistema, l'output sarà simile al seguente:

mysql  Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using  EditLine wrapper

Se hai installato MariaDB, dovresti ricevere un messaggio simile a questo:

mysql  Ver 15.1 Distrib 10.1.33-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Assicurati di annotare quale versione di MySQL o MariaDB stai utilizzando.

Reimpostare la password root di MySQL o MariaDB

Seguire questi passaggi per ripristinare la password di root di MySQL/MariaDB:

Per cambiare la password di root, prima dobbiamo fermare il server MySQL. Per fare ciò digitare il seguente comando:

sudo systemctl stop mysql

Avviare il server MySQL/MariaDB senza caricare le tabelle. Quando l'opzione --skip-grant-tables è abilitata, chiunque può connettersi al server di database senza password e con tutti i privilegi.

Per avviare il server database senza caricare le tabelle delle autorizzazioni:

sudo mysqld_safe --skip-grant-tables &

La e commerciale & alla fine del comando sopra farà funzionare il programma in background, così possiamo continuare a usare la shell.

Attenziome: Se riscontri il seguente errore mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists prova con i comandi seguenti, altrimenti passa al paragrafo successivo.

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld

Quindi prova nuovamente ad avviare il server database senza caricare le tabelle delle autorizzazioni:

sudo mysqld_safe --skip-grant-tables &

Connessione al database senza password

Dopo aver riavviato il database senza caricare le tabelle delle autorizzazioni puoi connetterti al server come utente root senza che ti venga richiesta la password:

mysql -u root

Impostare una nuova password di root

Esegui i seguenti comandi se hai MySQL 5.7.6 e versioni successive o MariaDB 10.1.20 e versioni successive:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MY_NEW_PASSWORD';
FLUSH PRIVILEGES;

Attenzione: Se l'istruzione ALTER USER non funziona per te, prova i comandi successivi:

 use mysql;
update user SET PASSWORD=PASSWORD("MY_NEW_PASSWORD") WHERE USER='root';
FLUSH PRIVILEGES;
exit;

Esegui i seguenti comandi se hai MySQL 5.7.5 e precedenti o MariaDB 10.1.20 e precedenti:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MY_NEW_PASSWORD');
FLUSH PRIVILEGES;

In entrambi i casi, se tutto va bene, dovresti vedere il seguente output:

Query OK, 0 rows affected (0.00 sec)
exit;

Arrestare e avviare normalmente il server database

Ora che la password di root è impostata, dovremo arrestare il server di database e avviarlo normalmente.

Arrestare il server database admin utilizzando il comando seguente:

mysqladmin -u root -p shutdown

Ti verrà richiesto di inserire la nuova password di root.

Adesso avviare normalmente il server database:

  • Per MySQL, digitare:
sudo systemctl start mysql
  • Per MariaDB, digitare:
sudo systemctl start mariadb

Verificare la password

Per verificare che la nuova password di root sia stata applicata correttamente digitare:

sudo mysql -u root -p

Ti verrà richiesto di inserire la nuova password di root. Inseriscilo e dovresti aver effettuato l'accesso al tuo server di database.

Conclusione

In questo tutorial, hai imparato a ripristinare la password di root di MySQL o MariaDB. Assicurati che la tua nuova password di root sia sicura e protetta e conservala in un luogo sicuro.