Hai dimenticato la tua password utente root MySQL? Nessun problema! Questa guida ti guida attraverso i passaggi per reimpostare la password utente root di MySQL nei sistemi operativi Linux. I passaggi indicati di seguito dovrebbero funzionare anche per reimpostare la password di root di MariaDB.
Abbiamo già pubblicato una guida per reimpostare la password utente root (amministrativa) in MySQL versioni precedenti, ovvero MySQL 5.7. Ma quel metodo non funzionava con la nuova versione di MySQL 8. Se desideri reimpostare la password di root in MySQL 8, segui una delle due soluzioni alternative indicate di seguito.
Reimposta la password utente root MySQL in Linux
Come ho già detto, possiamo reimpostare la password di root di MySQL in due modi.
- Il modo generico,
- Utilizzo di
init_file
variabile di sistema.
1. Il modo generico per reimpostare la password di root MySQL
Questo metodo funzionerà indipendentemente dal sistema operativo in uso. Ti avverto che è un meno sicuro modo, perché avvieremo il server MySQL con --skip-grant-tables
opzione. Ciò offre a chiunque abbia accesso al server accesso illimitato a tutti i database .
Innanzitutto, arresta il servizio MySQL utilizzando il comando:
$ sudo systemctl stop mysql
Puoi verificare se MySQL è stato effettivamente interrotto con il comando:
$ sudo systemctl status mysql
Risultato di esempio:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: inactive (dead) since Sat 2021-05-29 11:53:08 UTC; 8s ago Process: 560 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Process: 666 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS) Main PID: 666 (code=exited, status=0/SUCCESS) Status: "Server shutdown complete" May 29 10:08:33 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server… May 29 10:08:37 ubuntu2004.localdomain systemd[1]: Started MySQL Community Server. May 29 11:53:07 ubuntu2004.localdomain systemd[1]: Stopping MySQL Community Server… May 29 11:53:08 ubuntu2004.localdomain systemd[1]: mysql.service: Succeeded. May 29 11:53:08 ubuntu2004.localdomain systemd[1]: Stopped MySQL Community Server.
Bene, il servizio MySQL non è in esecuzione.
Ora, riavvia il server MySQL senza controllare i permessi eseguendo il comando seguente:
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
Qui, --skip-grant-tables
l'opzione ti consente di connetterti al server del database mysql senza password e con tutti i privilegi. Il --skip-networking
viene utilizzata per impedire agli altri client di connettersi al server di database. E la e commerciale (&
) Il simbolo viene utilizzato per eseguire il comando in background, in modo da poter digitare gli altri comandi forniti nei passaggi successivi. Tieni presente che il comando sopra è pericoloso e il tuo server di database diventa insicuro e vulnerabile alle minacce alla sicurezza. Dovresti eseguire questo comando solo per un breve periodo di tempo per reimpostare la password.
Potresti visualizzare il seguente errore:
2021-05-29T12:00:19.991826Z mysqld_safe Logging to '/var/log/mysql/error.log'. 2021-05-29T12:00:19.996942Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
Se vedi questo errore, crea la directory mancante (ad esempio /var/run/mysqld
) e imposta le autorizzazioni appropriate come di seguito.
$ sudo mkdir -p /var/run/mysqld
$ sudo chown -R mysql:mysql /var/run/mysqld
Ora riprova ad avviare il server mysql senza password e con privilegi di root:
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
Quindi, connettiti al server mysql usando il comando:
$ mysql
Verrai reindirizzato al prompt della shell di mysql.
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Dato che abbiamo effettuato l'accesso senza caricare le tabelle di concessione (perché abbiamo usato --skip-grant-tables
opzione), non possiamo utilizzare ALTER USER
comando per reimpostare la password. Quindi carichiamo le tabelle di concessione usando il comando:
mysql> FLUSH PRIVILEGES;
Ora, esegui il seguente comando per aggiornare la password utente root di mysql:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';
Nel comando precedente, sostituisci [email protected]#@!
con la tua password. Tieni presente che se hai abilitato Validate Password
componente, è necessario utilizzare una password complessa.
Infine, esci dal prompt di MySQL:
mysql> exit

Infine, spegni il server di database in esecuzione avviato in precedenza con --skip-grant-tables
opzione. Per farlo, esegui:
$ sudo mysqladmin -u root -p shutdown
Ti verrà chiesto di inserire il tuo sudo
password seguita dalla root
di MySQL password utente impostata nel passaggio precedente.
[sudo] password for ostechnix: Enter password: 2021-05-29T12:09:38.425737Z mysqld_safe mysqld from pid file /var/lib/mysql/ubuntu2004.localdomain.pid ended [1]+ Done sudo mysqld_safe --skip-grant-tables --skip-networking
Se il comando precedente non funziona, trova il .pid file
che contiene l'ID di processo del server. Il file PID sarà generalmente disponibile in /var/lib/mysql/
o /var/run/mysqld/
o /usr/local/mysql/data/
directory a seconda della distribuzione, del nome host e della configurazione. In genere, il nome del file ha estensione .pid e inizia con mysqld
o il nome host del tuo sistema.
Nel mio caso, è "/var/lib/mysql/ubuntuserver.pid"
.
Quindi, ho interrotto l'istanza del server di database con il comando:
$ sudo kill `/var/lib/mysql/ubuntuserver.pid`
Utilizza il segno di spunta indietro per citare il percorso del file.
Possiamo anche trovare il pid MySQL usando ps
e grep
comandi come di seguito:
$ ps ax | grep mysql
Risultato di esempio:
1930 pts/0 S 0:00 sudo mysqld_safe --skip-grant-tables --skip-networking 1931 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-networking 2091 pts/0 Sl 0:28 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --skip-networking --log-error=/var/log/mysql/error.log --pid-file=ubuntuserver.pid
Uccidilo manualmente come di seguito:
$ sudo kill <PID>
Oppure, uccidi tutti i servizi MySQL:
$ sudo killall mysql
Ora, avvia normalmente il servizio MySQL usando il comando:
$ sudo systemctl start mysql
Ora accedi al server MySQL con la nuova password:
$ mysql -u root -p
Risultato di esempio:

2. Reimposta la password di root MySQL con il file della password
Un altro modo per reimpostare la password di root di MySQL è usare init_file
variabile di sistema.
Arresta il servizio MySQL:
$ sudo systemctl stop mysql
Crea un file di testo, ad esempio ostechnix.txt
:
$ vi ostechnix.txt
Aggiungi la seguente riga al suo interno:
ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';
Sostituisci [email protected]#@!
con la tua password nella riga sopra. Se hai abilitato Validate Password
plug-in, dovresti specificare una password complessa. Salva e chiudi il file.
Ora avvia il server MySQL con il init_file
variabile di sistema che punta a ostechnix.txt
file:
$ sudo mysqld --init-file=/home/sk/ostechnix.txt &
Questo comando eseguirà il contenuto di ostechnix.txt
file e aggiorna il [email protected]
password dell'account con la nuova password menzionata nel ostechnix.txt
file e infine avvia il server mysql.
Ora ferma e riavvia normalmente il server MySQL:
$ sudo systemctl stop mysql
$ sudo systemctl start mysql
Infine, elimina il file della password, ad esempio ostechnix.txt
.
$ rm /home/sk/ostechnix.txt
Ora puoi essere in grado di accedere al server mysql con una nuova password usando il comando:
$ mysql -u root -p
Abbiamo anche pubblicato un metodo leggermente diverso per reimpostare la password di root di MySQL. Consulta la seguente guida per i dettagli:
>> How To Reset Root Password In MySQL 8 On Ubuntu Linux
Conclusione
In questa guida, abbiamo appreso due modi diversi per reimpostare la password utente root MySQL dimenticata nei sistemi operativi Linux. Se hai perso la password utente dell'account amministrativo del database, puoi reimpostarla facilmente in un paio di minuti.