Essere costretti a fare il reset root password di MySQL, perchĂ© l’abbiamo dimenticata è una di quei task che ogni System Administrator prima o poi si trova a dover affrontare. La password di root di MySQL® è cruciale per poter gestire il database MySQL; essa consente infatti all’utente root
di avere pieno accesso al database MySQL.
Per fare il reset della password dell’utente root
del database MySQL è indispensabile avere l’accesso root di Linux®, o amministratore, nel caso in cui MySQL è in esecuzione in un sistema Windows®.
Diciamo subito che bisogna evitare di confondere l’utente root
del database MySQL con l’utente root
di accesso al sistema Linux (accesso privilegiato di amministratore) o l’utente Amministratore di un sistema Windows. Le password ovviamente sono diverse! La password di root del sistema consente accesso al server; mentre la password root di MySQL consente l’accesso solo al database MySQL.
In questo mini-tutorial, eseguiremo tutti i passaggi per reimpostare una password root MySQL utilizzando la riga di comando interfaccia. Notare che non è necessario conoscere la precedente password per fare il reset della password di root del database MySQL.
Reset della root password di MySQL
La procedura da seguire per fare il reset root password di MySQL o MariaDB puĂ² essere sintetizzata come segue:
- Stop dei servizi del database system;
- Avvio del database system in modalitĂ safe;
- Impostazione di una nuova root pasword;
- Stop del database system dalla modalitĂ safe;
- Avvio standard dei servizi del database system;
- Verifica di Login standard al database.
Di seguito il dettaglio di ciascun singolo passo, arricchito di considerazioni e note personali.
Passo 1 – Stop dei servizi del database system;
Se stai utilizzando una delle distribuzioni GNU Linux piĂ¹ recenti, puoi utilizzare il comando seguente per arrestare il servizio MySQL:
$ sudo systemctl stop mysqld.service
Oppure, per il database MariaDB:
$ sudo systemctl stop mariadb.service
Se invece stai utilizzando distribuzioni GNU Linux un po’ piĂ¹ datate il comando da utilizzare per arrestare il servizio è il seguente:
$ sudo /etc/init.d/mysql stop
Oppure, per per il database MariaDB:
$ sudo /etc/init.d/mariadb stop
Passo 2 – Avvio del database system in modalitĂ protetta (safe)
Avviare MySQL in modalitĂ protetta (safe) e limitata tramite il seguente comando. Notare che il simbolo ‘&
’ in fondo al comando è strettamente necessario in quanto la modalità «safe» deve essere in esecuzione in background.
$ sudo mysqld_safe --skip-grant-tables &
Notare inoltre che l’opzione --skip-grant-tables
rende disponibile il login a MySQL o MariaDB senza che sia necessaria la password e con tutti i privilegi impostati. L’uso di questa opzione abilita di default anche l’opzione --skip-networking
, utilizzata per prevenire l’accesso al database server di altri client dalla rete.
Passo 3 – Impostazione della nuova password
Possiamo ora collegarci a MySQL per effettuare le operazioni di recovery. Eseguire il comando che segue per collegarsi a MySQL:
$ mysql -u root
Notare che non viene richiesta la password, per quanto descritto piĂ¹ sopra.
Impostazione della nuova password di root di MySQL
Questo è il punto cruciale della procedura di reset della password di root del nostro database MySQL. Ma prima di procedere è necessaria una precisazione.
La procedura di impostazione di una nuova password per lo user root di MySQL o MariaDB è strettamente legata alla versione del prodotto. Pertanto i comandi che seguono in questa sezione del tutorial sono differenziati sulla base della versione corrente di MySQL o MariaDB in uso.
Se stai per resettare la root password di una versione MySQL 5.7.6
o successive, oppure una di una versione MariaDB 10.1.20
e successive, dovrai applicare i comandi riportati qui sotto:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-strong-password';
FLUSH PRIVILEGES;
Se invece stai per cambiare la root password di una versione MySQL 5.7.5
o precedente (piĂ¹ vecchia di), oppure di una versione MariaDB 10.1.20
o precedente (piĂ¹ vecchia di), dovrai applicare i comandi riportati qui sotto:
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new-strong-password');
FLUSH PRIVILEGES;
Notare che nell’esempio abbiamo impostato la nuova password a new-strong-password
che non è proprio il massimo della sicurezza! Raccomandiamo, a questo proposito, di scegliere bene la nuova password da assegnare, utilizzando una combinazione di caratteri decisamente piĂ¹ complessa e robusto. In altre parole, difficile da individuare.
Passo 4 – Stop del database system dalla modalitĂ safe
In questo passaggio va fermato il servizio di database precedentemente avviato in modalitĂ safe, con l’opzione --skip-grant-tables
, piĂ¹ sopra.
Per fermare il servizio, eseguire il comando:
$ sudo mysqladmin -u root -p shutdown
Al prompt di richiesta di inserimento della password, digitare la nuova password appena impostata.
Il database system a questo punto è completamente fermo e nessun processo mysql
dovrebbe piĂ¹ essere attivo nel sistema.
Passo 5 – Avvio standard dei servizi del database system
In questo passaggio va eseguito il normale avvio dei servizi del database MySQL o MariaDB in modo standard.
Nelle distribuzioni GNU Linux moderne, il Database system MySQL puĂ² essere riavviato così:
$ sudo systemctl start mysql.service
Nelle distribuzioni GNU Linux moderne, il Database system MariaDB puĂ² essere riavviato così:
$ sudo systemctl start mariadb.service
Per distribuzioni GNU Linux piĂ¹ “datate”, fare riferimento alla specifica distribuzione (Debian, Ubuntu, Red Hat, CentOS, etc.) ed eventualmente anche alla versione in uso.
Passo 6 – Verifica di Login standard al database
La procedura per eseguire il reset della password di root del database MySQL o MariaDB è conclusa, non resta che verificare che tutto sia andato come previsto, effettuando un login di prova in MySQL con l’utente root
e la nuova password appena impostata.
$ mysql -u root -p
Enter password for root
Digita ora la nuova password per entrare nel database MySQL o MariaDB.
Conclusioni
Eseguire il reset della password dell’utente root
del database MySQL, se l’hai dimenticata, è una di quelle operazioni cruciali che permettono a qualsiasi Sysadmin di poter riprendere a gestire pienamente il database MySQL o MariaDB in poco tempo e con minime interruzioni di servizio.
In questo mini-tutorial, abbiamo voluto semplificare al massimo tutte le operazioni necessarie per un veloce reset della password di root
di MySQL. Tuttavia, operazioni che agiscono in modo così profondo su un sistema così critico come puĂ² essere un database, va sempre eseguita con grande attenzione.
Per questo genere di operazioni così critiche è sempre raccomandato eseguire preventivamente un Backup di tutti i database MySQL o MariaDB, nel caso che qualcosa possa andare storto.
CondividiDisclaimer
Questa pagina potrebbe contenere link di affiliazione. Gli acquisti o gli ordini che effettuerai tramite tali link possono generare commissioni che ci aiutano a sostenere questo sito web.