Passa al contenuto principale

Come cambiare la password di MySQL per l'utente root e gli utenti regolari

· 3 minuti di lettura
Customer Care Engineer

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.

informazioni

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.

informazioni

'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:

  1. Connettiti al server MySQL come root:
mysql -u root -p

Inserisci la tua password di root di MySQL.

  1. 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