Come cambiare la password di MySQL per l'utente root e gli utenti regolari
Hai dimenticato la password di root di MySQL? Non preoccuparti, succede anche agli amministratori esperti. In questo articolo, spiegheremo come reimpostare la password di root di MySQL per diverse versioni: MySQL 5.7 e MySQL 8.0+. Inoltre, spiegheremo come reimpostare la password per un utente regolare del database.
Per MariaDB, consulta la nostra guida separata.
Root è l'amministratore principale del database. Hanno pieno accesso a tutti i dati e le impostazioni. Se perdi questa password, non sarà più possibile modificare determinate impostazioni ed eseguire alcuni comandi.
Tutte le operazioni verranno eseguite tramite la riga di comando su SSH. Puoi trovare istruzioni più dettagliate su come connetterti al tuo server utilizzando questo protocollo in questo articolo.
Prima di procedere, controlla il contenuto del file /root/.my.cnf. Spesso contiene la password di root corrente per accedere a MySQL.
Puoi testare la connessione utilizzando il comando:
mysql -u root -p
Successivamente, inserisci la password dal file .my.cnf.
Se la password non funziona, segui le istruzioni sottostanti.
Come reimpostare la password di root di MySQL
Passaggio 1: arresta MySQL
Per reimpostare la password, devi prima arrestare MySQL. Inserisci il seguente comando:
- Per Debian e Ubuntu:
systemctl stop mysql
- Per CentOS/RockyLinux/AlmaLinux:
systemctl stop mysqld
Passaggio 2: riavvia il server in modalità provvisoria
- Per Debian e Ubuntu:
Assicurati che la directory da cui verrà eseguito MySQL esista e abbia il proprietario appropriato:
mkdir -p /var/run/mysqld/ && chown -R mysql: /var/run/mysqld/
Avvia il server MySQL senza controllo degli accessi:
mysqld_safe --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &
Se MySQL si avvia correttamente, vedrai un messaggio simile a:
2024-11-28T23:50:19.298141Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Per continuare a lavorare nella riga di comando, premi "Ctrl + C".
- Per CentOS/RockyLinux/AlmaLinux:
sudo -u mysql mysqld --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &
Passaggio 3: connettiti a MySQL
mysql --socket=/var/run/mysqld/mysqld.sock
Passaggio 4: reimposta la password
- Per MySQL 5.7, esegui i seguenti comandi in sequenza:
FLUSH PRIVILEGES;
Per un utente locale:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NuovaPassword';
Per un utente di rete (se esiste):
ALTER USER 'root'@'%' IDENTIFIED BY 'NuovaPassword';
Poi:
FLUSH PRIVILEGES;
Sostituisci NuovaPassword con la nuova password desiderata.
'user'@'localhost' si riferisce a un utente locale che si connette tramite socket o localhost. 'user'@'%' si riferisce a un utente di rete con accesso da qualsiasi indirizzo IP.
Puoi impostare la stessa password o password diverse per questi utenti. Se l'utente di rete non esiste, il comando @'%' genererà un errore.
Esci da MySQL utilizzando il comando exit o premendo "Ctrl + D".
- Per MySQL 8.0+, esegui i seguenti comandi:
FLUSH PRIVILEGES;
Per un utente locale:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NuovaPassword';
Per un utente di rete (se esiste):
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'NuovaPassword';
Poi:
FLUSH PRIVILEGES;
Sostituisci NuovaPassword con la nuova password desiderata.
Esci da MySQL utilizzando il comando exit o premendo "Ctrl + D".
Passaggio 5: riavvia MySQL
Arresta MySQL:
mysqladmin shutdown --socket=/var/run/mysqld/mysqld.sock -p
Quindi, inserisci la password di root precedentemente impostata.
Avvia MySQL in modalità normale:
- Per Debian e Ubuntu:
systemctl start mysql
- Per CentOS/RockyLinux/AlmaLinux:
systemctl start mysqld
Come reimpostare la password per gli utenti regolari
Se hai dimenticato la password per un utente diverso da root, l'approccio è simile:
- Connettiti al server MySQL come root:
mysql -u root -p
Inserisci la tua password di root di MySQL.
- Esegui il comando per cambiare la password:
- MySQL 5.7:
Per un utente locale:
ALTER USER 'username'@'localhost' IDENTIFIED BY 'NuovaPasswordUtente';
Per un utente di rete (se esiste):
ALTER USER 'username'@'%' IDENTIFIED BY 'NuovaPasswordUtente';
Poi:
FLUSH PRIVILEGES;
Sostituisci username con il nome utente esistente e NuovaPasswordUtente con la nuova password desiderata.
Esci da MySQL utilizzando il comando exit o premendo "Ctrl + D".
- MySQL 8.0+:
Per un utente locale:
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NuovaPassword';
Per un utente di rete (se esiste):
ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'NuovaPassword';
Sostituisci username con il nome utente esistente e NuovaPasswordUtente con la nuova password desiderata.
Quindi esci da MySQL utilizzando il comando exit o la combinazione di tasti "Ctrl + D".
Se necessario, puoi elencare tutti gli utenti con la seguente query:
SELECT User, Host FROM mysql.user;
Come connettersi a MySQL localmente senza inserire una password
Per evitare di inserire manualmente la password ogni volta che ti connetti a MySQL dalla riga di comando sul tuo server, puoi salvarla nel file /root/.my.cnf. Apri il file in un editor di testo:
nano /root/.my.cnf
Aggiungi le seguenti righe:
[client]
user = root
password = TuaPasswordDiRoot
Sostituisci TuaPasswordDiRoot con la tua password di root effettiva.
Quindi salva il file utilizzando la combinazione di tasti "Ctrl + O" ed esci dall'editor di testo con "Ctrl + X".
Per sicurezza, imposta permessi più restrittivi sul file .my.cnf:
chmod 600 /root/.my.cnf
Dopo questa configurazione, puoi connetterti semplicemente eseguendo il comando:
mysql -u root