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 root@IP_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 nome_utente@IP_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 nome_utente@IP_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
Poiché la gestione degli account è disabilitata quando il servizio viene avviato con l'opzione --skip-grant-tables
, dobbiamo ricaricare le concessioni. In questo modo potremo modificare la password in seguito:
FLUSH PRIVILEGES;
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.