- 1 1. Introduzione
- 2 2. Come impostare e modificare le password MySQL
- 3 3. Come reimpostare una password MySQL se l’hai dimenticata
- 4 4. Risoluzione dei problemi comuni durante la modifica delle password MySQL
- 5 5. Rafforzamento della Sicurezza di MySQL e Impostazioni Raccomandate
- 6 6. Domande Frequenti (FAQ)
- 6.1 Q1: Qual è il modo più semplice per recuperare una password root MySQL dimenticata?
- 6.2 Q2: Cosa devo fare se vedo “ERROR 1045 (28000): Access denied for user”?
- 6.3 Q3: C’è una differenza tra MySQL 5.6 e 8.0 quando si cambiano le password?
- 6.4 Q4: Come posso rafforzare la politica delle password MySQL?
- 6.5 Q5: È sicuro disabilitare l’utente root di MySQL?
- 6.6 Q6: Esistono strumenti per gestire in modo sicuro le password MySQL?
- 6.7 Q7: Posso registrare le modifiche alle password MySQL?
- 7 7. Conclusione
1. Introduzione
L’importanza della gestione delle password MySQL
MySQL è un sistema di gestione di database ampiamente utilizzato in tutto il mondo. Tuttavia, la fondazione della sua gestione della sicurezza risiede nella corretta configurazione e amministrazione delle password. Senza una gestione adeguata delle password, potresti affrontare i seguenti rischi:
- Accesso non autorizzato : Le password deboli rendono il tuo sistema vulnerabile ad attacchi esterni.
- Violazione dei dati : Informazioni sensibili possono essere esposte da utenti malintenzionati.
- Manomissione del sistema : La cancellazione o modifica dei dati può influire sul normale funzionamento di siti web e applicazioni.
Per evitare questi rischi, è essenziale impostare password robuste e cambiarle regolarmente. In questo articolo, spiegheremo in dettaglio i seguenti aspetti della gestione delle password MySQL:
✅ Come impostare le password per i nuovi utenti
✅ Come cambiare le password per gli utenti esistenti
✅ Come reimpostare una password dimenticata
✅ Come verificare la robustezza della password
✅ Errori comuni e come risolverli
✅ Impostazioni consigliate per migliorare la sicurezza
Leggendo questo articolo, acquisirai le conoscenze e le competenze necessarie per gestire correttamente le password MySQL, quindi assicurati di leggerlo fino alla fine.
2. Come impostare e modificare le password MySQL
Creare un nuovo utente e impostare una password
Questa sezione spiega come creare un nuovo utente e impostare una password in MySQL.
1. Accedi a MySQL
Per prima cosa, accedi come amministratore MySQL (ad esempio l’utente root).
mysql -u root -p
-u root è un’opzione per accedere come utente root, e -p mostra un prompt per la password.
2. Crea un nuovo utente e imposta una password
Utilizza il comando CREATE USER per creare un nuovo utente e impostare una password.
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'secure_password';
'newuser'@'localhost': Specifica il nome utente (newuser) e l’host (localhost) da cui l’utente può connettersi.'secure_password': La password da impostare (assicurati di usare una password robusta).
3. Concedi i privilegi appropriati
Devi concedere i privilegi di database al nuovo utente. Ad esempio, per concedere tutti i privilegi:
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost' WITH GRANT OPTION;
ALL PRIVILEGES: Concede tutti i privilegi.*.*: Consente l’accesso a tutti i database e tabelle.WITH GRANT OPTION: Consente all’utente di concedere privilegi ad altri utenti.
4. Applica i privilegi
Esegui FLUSH PRIVILEGES per applicare le modifiche.
FLUSH PRIVILEGES;
Hai ora creato con successo un nuovo utente con una password sicura e i privilegi appropriati.
Modificare la password di un utente esistente
Questa sezione spiega come cambiare la password di un utente MySQL esistente.
1. Accedi a MySQL
Accedi con privilegi amministrativi.
mysql -u root -p
2. Cambia la password usando ALTER USER (MySQL 5.7 e versioni successive)
ALTER USER 'existinguser'@'localhost' IDENTIFIED BY 'new_secure_password';
'existinguser'@'localhost': Il nome utente e l’host da modificare.'new_secure_password': La nuova password.
3. Cambia la password usando SET PASSWORD (MySQL 5.6 e versioni precedenti)
SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('new_secure_password');
Utilizzare la funzione PASSWORD() garantisce che la password sia correttamente crittografata prima di essere memorizzata.
4. Applica le modifiche
Non dimenticare di eseguire FLUSH PRIVILEGES;.
FLUSH PRIVILEGES;
Ora puoi cambiare in modo sicuro la password di un utente esistente usando questo metodo. 
3. Come reimpostare una password MySQL se l’hai dimenticata
Anche se dimentichi la tua password MySQL, puoi reimpostarla seguendo la procedura corretta. Questa sezione spiega come reimpostare le password su Windows, Linux e Mac.
Come reimpostare una password MySQL su Windows
Su Windows, un approccio comune per reimpostare la password di root di MySQL è utilizzare l’opzione skip-grant-tables.
1. Arresta il servizio MySQL
Prima, arresta il servizio MySQL in esecuzione su Windows.
net stop mysql
In alternativa, puoi aprire services.msc e arrestare manualmente il servizio MySQL.
2. Avvia MySQL usando mysqld --skip-grant-tables
mysqld --skip-grant-tables --skip-networking
3. Accedi a MySQL
mysql -u root
4. Imposta una nuova password
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
Oppure, per MySQL 5.6 e versioni precedenti, usa SET PASSWORD.
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_secure_password');
5. Riavvia MySQL
net stop mysql
net start mysql
Come reimpostare una password MySQL su Linux / Mac
1. Arresta il servizio MySQL
sudo systemctl stop mysql
2. Avvia MySQL in modalità --skip-grant-tables
sudo mysqld_safe --skip-grant-tables --skip-networking &
3. Accedi a MySQL
mysql -u root
4. Reimposta la password
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
5. Riavvia MySQL
sudo systemctl start mysql
Cambiamenti nei metodi di reimpostazione della password in MySQL 8.0 e versioni successive
In MySQL 8.0, il meccanismo di gestione delle password è cambiato, quindi dovresti tenere presente il seguente punto.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_secure_password';
Ciò ti consente di continuare a utilizzare il metodo di autenticazione legacy delle password quando necessario.
4. Risoluzione dei problemi comuni durante la modifica delle password MySQL
Potresti incontrare errori quando tenti di modificare le password MySQL. Questa sezione spiega le cause e le soluzioni per gli errori più comuni.
ERRORE 1045 (28000): Accesso negato per l’utente
Causa dell’errore
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Questo errore si verifica durante l’accesso a MySQL se la password è errata o i privilegi sono insufficienti.
Soluzione
- Ricontrolla la password inserita
- Specifica il nome utente e l’host corretti
SELECT User, Host FROM mysql.user;
- Reimposta la password (vedi la sezione di reimpostazione della password)
- Configura correttamente i privilegi
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
ERRORE 1133: Impossibile trovare alcuna riga corrispondente nella tabella user
Causa dell’errore
ERROR 1133: Can't find any matching row in the user table
Questo errore si verifica quando l’utente specificato non esiste.
Soluzione
- Controlla l’elenco degli utenti attuali
SELECT User, Host FROM mysql.user;
- Ricrea l’utente
CREATE USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
- Specifica l’host corretto (usa
localhosto%in modo appropriato)
ERRORE 1820: Devi reimpostare la tua password
Causa dell’errore
ERROR 1820: You must reset your password using ALTER USER statement before executing this statement.
Questo errore si verifica quando la password è scaduta.
Soluzione
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
Per disabilitare la scadenza della password:
SET GLOBAL default_password_lifetime = 0;
ERRORE 2059: Impossibile caricare il plugin caching_sha2_password
Causa dell’errore
ERROR 2059: Plugin caching_sha2_password could not be loaded
In MySQL 8.0 e versioni successive, il plugin di autenticazione predefinito è cambiato in caching_sha2_password, il che può causare errori con alcuni client.
Soluzione
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_secure_password';
Oppure aggiungi quanto segue al file di configurazione MySQL (my.cnf o my.ini) e riavvia MySQL.
[mysqld]
default_authentication_plugin=mysql_native_password
Riavvia MySQL:
sudo systemctl restart mysql
5. Rafforzamento della Sicurezza di MySQL e Impostazioni Raccomandate
Rafforzare la sicurezza di MySQL è essenziale per migliorare la protezione del database e impedire accessi non autorizzati e violazioni dei dati. Questa sezione presenta configurazioni consigliate per migliorare la sicurezza di MySQL.
Impostare Password Forti
Usare password deboli in MySQL rende il tuo sistema un bersaglio facile per gli attaccanti. Configura le impostazioni per aumentare la robustezza delle password.
Abilitare una Politica Password
Verifica la politica password attuale:
SHOW VARIABLES LIKE 'validate_password%';
Configura una politica password forte:
SET GLOBAL validate_password.policy = STRONG;
SET GLOBAL validate_password.length = 12;
SET GLOBAL validate_password.mixed_case_count = 1;
SET GLOBAL validate_password.number_count = 1;
SET GLOBAL validate_password.special_char_count = 1;
Impostare la Scadenza della Password
Cambiare regolarmente le password migliora la sicurezza.
Verifica l’impostazione attuale della scadenza della password:
SHOW VARIABLES LIKE 'default_password_lifetime';
Imposta la scadenza della password a 90 giorni:
SET GLOBAL default_password_lifetime = 90;
Rafforzare la Sicurezza dell’Utente root
Limitare l’Accesso Remoto per l’Utente root
Verifica la configurazione host attuale per l’utente root:
SELECT User, Host FROM mysql.user WHERE User = 'root';
Disabilita l’accesso remoto per root:
UPDATE mysql.user SET Host='localhost' WHERE User='root';
FLUSH PRIVILEGES;
Creare un Account Admin Alternativo e Disabilitare root
CREATE USER 'admin_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;
RENAME USER 'root'@'localhost' TO 'disabled_root'@'localhost';
FLUSH PRIVILEGES;
Limitare le Connessioni Remote di MySQL
Modifica il file di configurazione (my.cnf o my.ini):
[mysqld]
bind-address = 127.0.0.1
Configura il firewall su Linux:
sudo ufw deny 3306
Consenti solo un indirizzo IP specifico:
sudo ufw allow from 192.168.1.100 to any port 3306
Rimuovere Account e Privilegi Inutili
Verifica l’elenco utenti attuale:
SELECT User, Host FROM mysql.user;
Rimuovi gli utenti anonimi:
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;
Rimuovi il database di test non necessario:
DROP DATABASE test;
FLUSH PRIVILEGES;
Abilitare il Logging di MySQL
Abilita il registro degli errori:
[mysqld]
log_error = /var/log/mysql/error.log
Abilita il registro delle query generali:
general_log = 1
general_log_file = /var/log/mysql/general.log
Riavvia MySQL:
sudo systemctl restart mysql
6. Domande Frequenti (FAQ)
Questa sezione riassume domande comuni e soluzioni relative alla configurazione, modifica e reimpostazione della password MySQL.
Q1: Qual è il modo più semplice per recuperare una password root MySQL dimenticata?
Soluzione
- Arresta MySQL
sudo systemctl stop mysql
- Avvia MySQL in modalità
skip-grant-tablessudo mysqld_safe --skip-grant-tables --skip-networking &
- Accedi a MySQL
mysql -u root
- Imposta una nuova password
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
- Riavvia MySQL
sudo systemctl restart mysql
Q2: Cosa devo fare se vedo “ERROR 1045 (28000): Access denied for user”?
Soluzione
- Verifica la password inserita
mysql -u root -p
- Conferma che l’utente esista
SELECT User, Host FROM mysql.user;
- Reimposta la password (vedi le istruzioni precedenti)
- Concedi i privilegi appropriati
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
Q3: C’è una differenza tra MySQL 5.6 e 8.0 quando si cambiano le password?
Modifica della password in MySQL 5.6 e versioni precedenti
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_secure_password');
Modifica della password in MySQL 8.0 e versioni successive
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
In MySQL 8.0, poiché caching_sha2_password è il metodo di autenticazione predefinito, i client più vecchi potrebbero richiedere la seguente modifica:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_secure_password';
Q4: Come posso rafforzare la politica delle password MySQL?
Configura una politica di password forte
SET GLOBAL validate_password.policy = STRONG;
SET GLOBAL validate_password.length = 12;
SET GLOBAL validate_password.mixed_case_count = 1;
SET GLOBAL validate_password.number_count = 1;
SET GLOBAL validate_password.special_char_count = 1;
Q5: È sicuro disabilitare l’utente root di MySQL?
Soluzione
- Crea un account amministratore
CREATE USER 'admin_user'@'localhost' IDENTIFIED BY 'secure_password'; GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;
- Disabilita l’account root
RENAME USER 'root'@'localhost' TO 'disabled_root'@'localhost'; FLUSH PRIVILEGES;
Q6: Esistono strumenti per gestire in modo sicuro le password MySQL?
Soluzione
mysql_config_editor(Strumento ufficiale MySQL)mysql_config_editor set --login-path=local --host=localhost --user=root --password
Questo ti consente di accedere senza digitare esplicitamente la password.
mysql --login-path=local
- Gestori di password (Bitwarden, 1Password, KeePass, ecc.)
- Utile per generare e archiviare in modo sicuro password complesse.
Q7: Posso registrare le modifiche alle password MySQL?
Soluzione
Abilita il General Query Log
[mysqld]
general_log = 1
general_log_file = /var/log/mysql/general.log
Riavvia MySQL:
sudo systemctl restart mysql
7. Conclusione
Questo articolo ha spiegato tutto, dalle basi alle tecniche avanzate, della gestione delle password MySQL. Di seguito è riportato un riepilogo dei punti chiave insieme a una lista di controllo per gestire correttamente le password MySQL.
Punti chiave della gestione delle password MySQL
✅ Una corretta configurazione e gestione delle password è la base della sicurezza
✅ Imposta password complesse quando crei nuovi utenti
✅ Cambia le password regolarmente e configura le politiche di scadenza
✅ Comprendi le procedure di recupero per password dimenticate
✅ Risolvi correttamente gli errori durante le modifiche delle password
✅ Ottimizza l’accesso remoto e la gestione dell’utente root per rafforzare la sicurezza
✅ Abilita la registrazione per monitorare le attività legate alle password
Lista di controllo per la gestione delle password MySQL
| Checklist Item | Status |
|---|---|
| Have you set a strong root password for MySQL? | ✅ / ❌ |
Do you use the CREATE USER command when creating new users? | ✅ / ❌ |
Have you enabled the validate_password plugin and configured a strong password policy? | ✅ / ❌ |
| Do you regularly change passwords and set expiration policies? | ✅ / ❌ |
Have you disabled remote access for the root user? | ✅ / ❌ |
| Have you removed unnecessary or anonymous accounts? | ✅ / ❌ |
Do you understand how to reset passwords using skip-grant-tables mode? | ✅ / ❌ |
Do you understand how to resolve ERROR 1045 and ERROR 1820 during password changes? | ✅ / ❌ |
Have you enabled MySQL logs (general_log and error_log)? | ✅ / ❌ |
Azioni consigliate successive alla lettura di questo articolo
- Rivedi la tua attuale politica delle password e rafforzala se necessario
SHOW VARIABLES LIKE 'validate_password%'; SET GLOBAL validate_password.policy = STRONG; SET GLOBAL validate_password.length = 12;
- Rimuovi gli account non necessari
DELETE FROM mysql.user WHERE User=''; DROP DATABASE test; FLUSH PRIVILEGES;
- Limita l’accesso remoto per l’utente root
UPDATE mysql.user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES;
- Configura la scadenza regolare delle password
SET GLOBAL default_password_lifetime = 90;
- Abilita la registrazione per il monitoraggio
[mysqld] log_error = /var/log/mysql/error.log general_log = 1 general_log_file = /var/log/mysql/general.log
Riavvia MySQL:
sudo systemctl restart mysql
Articoli correlati per approfondire
📌 Guida dettagliata alla gestione dei privilegi utente MySQL
📌 Procedure di backup e ripristino MySQL
📌 Come ottimizzare i database MySQL
📌 Configurare MySQL con autenticazione esterna (LDAP o OAuth)
Considerazioni finali
La gestione delle password MySQL è conoscenza essenziale per proteggere la sicurezza del database.
Applica le pratiche illustrate in questa guida e assicurati una gestione sicura del database! 💪


