Come verificare, modificare e reimpostare la password di root di MySQL (Guida completa per principianti)

目次

1. Come controllare la password di root di MySQL

La password di root di MySQL è un elemento critico nella gestione del database. Tuttavia, soprattutto per i principianti, potresti chiederti: “Non conosco la password”, o “Dove posso trovare la password iniziale?” In questa sezione spiegheremo metodi specifici per verificare la password di root di MySQL.

Come controllare la password iniziale

Nelle versioni MySQL 5.7 e successive, una password iniziale per l’utente root viene generata automaticamente e registrata nel file di log durante l’installazione. Segui i passaggi seguenti per controllare questa password temporanea.

Passaggi

  1. Apri un terminale (o Prompt dei comandi) per controllare il file di log di MySQL.
  2. Esegui il seguente comando:
    sudo grep 'temporary password' /var/log/mysqld.log
    
  1. L’output includerà qualcosa di simile al seguente:
    [Note] A temporary password is generated for root@localhost: EaGapdplN0*m
    
  1. In questo caso, EaGapdplN0*m è la password iniziale per l’utente root.

Note importanti

  • La password temporanea può essere usata una sola volta. Dopo aver effettuato l’accesso, devi cambiarla immediatamente.
  • Se il file di log non può essere trovato o incontri un errore di permessi, esegui il comando con privilegi amministrativi.

Come controllare la password corrente

Per motivi di sicurezza, MySQL non fornisce un comando o metodo per visualizzare direttamente una password di root esistente. Se non conosci la password corrente, fai riferimento alla sezione “Cosa fare se hai dimenticato la password di root” e considera di reimpostarla.

2. Come cambiare la password di root di MySQL

Cambiare regolarmente la password di root di MySQL è importante per mantenere la sicurezza. In questa sezione spiegheremo in dettaglio come cambiare la password usando le credenziali di root attuali.

Passaggi base per cambiare la password

Segui questi passaggi per accedere a MySQL e impostare una nuova password.

Passaggi

  1. Apri un terminale o Prompt dei comandi e inserisci il seguente comando per accedere a MySQL:
    mysql -u root -p
    
  • -u root specifica che il nome utente è root.
  • -p ti chiede di inserire la password durante l’accesso.
  1. Esegui il seguente comando SQL per cambiare la password:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
    
  1. Ricarica le informazioni sui privilegi eseguendo:
    FLUSH PRIVILEGES;
    
  1. Dopo aver eseguito con successo i comandi, esci da MySQL:
    exit
    

Note importanti

  • Usa una password forte
  • Raccomandiamo che la tua nuova password includa i seguenti elementi: Esempio: MyS3cure!2025

    • Lettere maiuscole e minuscole
    • Numeri
    • Simboli (ad esempio, @, #, $, !)
    • Almeno 12 caratteri di lunghezza
  • Fai attenzione alle sessioni attive

  • Se cambi la password durante una sessione MySQL, potresti dover riconnetterti.

  • Controlla i privilegi dell’utente

  • Assicurati che l’utente root abbia i privilegi appropriati. Se non puoi cambiare la password, contatta l’amministratore di sistema.

Problemi comuni durante il cambio della password

Impossibile accedere dopo aver cambiato la password

  • Causa: Potresti non aver eseguito il comando FLUSH PRIVILEGES.
  • Soluzione: Accedi nuovamente ed esegui FLUSH PRIVILEGES;.

La nuova password non soddisfa i requisiti della politica di sicurezza

  • Causa: MySQL potrebbe avere una politica password rigida abilitata.
  • Soluzione: Imposta una password più forte o, se necessario, modifica le impostazioni della politica.

3. Cosa fare se hai dimenticato la password di root

Se dimentichi la password di root di MySQL, non potrai accedere al database con i metodi di login normali. Tuttavia, disabilitando temporaneamente il sistema di autenticazione di MySQL, puoi reimpostare la password. In questa sezione spieghiamo i passaggi dettagliati.

Passaggi per reimpostare la password di root

1. Arresta il servizio MySQL

Prima, arresta il servizio MySQL per spegnere temporaneamente il database. Usa il seguente comando:

sudo systemctl stop mysqld
  • Se il comando viene eseguito correttamente, il servizio MySQL si arresterà.

2. Avvia MySQL con l’Autenticazione Disabilitata

Avvia MySQL con l’opzione --skip-grant-tables per disabilitare l’autenticazione.

sudo mysqld_safe --skip-grant-tables &
  • Questo comando avvia MySQL senza imporre l’autenticazione.
  • Importante: Poiché la sicurezza è significativamente ridotta in questa modalità, assicurati che nessun altro utente possa accedere al sistema durante l’esecuzione di questa operazione.

3. Reimposta la Password Root

Accedi a MySQL mentre l’autenticazione è disabilitata e reimposta la password.

  1. Accedi a MySQL:
    mysql -u root
    
  1. Imposta una nuova password root con il seguente comando:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
    
  1. Ricarica le informazioni sui privilegi:
    FLUSH PRIVILEGES;
    
  1. Dopo aver completato il lavoro, esci da MySQL:
    exit
    

4. Riavvia il Servizio MySQL

Riavvia il servizio MySQL per riattivare l’autenticazione normale:

sudo systemctl restart mysqld

Dopo il riavvio, accedi a MySQL utilizzando la password appena impostata.

Note Importanti

  • Mantieni la Sicurezza
  • Durante l’uso dell’opzione --skip-grant-tables, MySQL è completamente non protetto. Esegui questa attività rapidamente ed evita rischi non necessari.
  • Impatto sugli Altri Utenti
  • Questo metodo è destinato all’account root. Assicurati che gli altri utenti non siano influenzati.

Risoluzione dei Problemi

Comando mysqld_safe Non Trovato

  • Causa: Su alcune distribuzioni Linux, mysqld_safe potrebbe non essere installato.
  • Soluzione: Avvia MySQL direttamente utilizzando:
    sudo mysqld --skip-grant-tables &
    

Ancora Incapace di Accedere Dopo aver Reimpostato la Password

  • Causa: MySQL potrebbe non aver ricaricato le informazioni sui privilegi aggiornate.
  • Soluzione: Accedi di nuovo ed esegui FLUSH PRIVILEGES; .

4. Migliori Pratiche per Rafforzare la Sicurezza di MySQL

Gestire correttamente la password root di MySQL è importante, ma non è sufficiente da solo. Per operare un database in modo sicuro, dovrebbero essere implementate misure di sicurezza aggiuntive. Questa sezione introduce modi pratici per migliorare la sicurezza di MySQL.

Imposta una Password Forte

La sicurezza del database dipende fortemente dalla forza della password. Segui queste linee guida quando crei una password forte.

Linee Guida per la Creazione della Password

  • Lunghezza: Almeno 12 caratteri
  • Tipi di Caratteri: Una combinazione di lettere maiuscole, minuscole, numeri e simboli
  • Esempio: 2#SecureMySQL_2025!

Applica le Politiche di Sicurezza

MySQL ti permette di configurare le politiche di validazione della password. Usa il seguente comando per controllare la politica corrente:

SHOW VARIABLES LIKE 'validate_password%';

Se necessario, modifica la politica come segue:

SET GLOBAL validate_password_policy = 'MEDIUM';
SET GLOBAL validate_password_length = 12;

Rimuovi Account e Dati Non Necessari

Controlla ed Elimina Account Non Necessari

Durante l’installazione, MySQL potrebbe creare account di test predefiniti o utenti anonimi. Questi possono costituire rischi per la sicurezza e dovrebbero essere rimossi se non necessari.

  1. Controlla l’elenco degli utenti correnti:
    SELECT user, host FROM mysql.user;
    
  1. Elimina gli utenti non necessari:
    DROP USER 'username'@'hostname';
    

Elimina il Database di Test

Rimuovi il database di test creato durante l’installazione:

DROP DATABASE test;

Restringi l’Accesso all’Account Root

Limitare l’accesso all’account root migliora la sicurezza.

Restringi all’Accesso Locale Solo

Per impostazione predefinita, l’account root potrebbe consentire connessioni remote. Restringilo all’accesso locale solo:

UPDATE mysql.user SET host = 'localhost' WHERE user = 'root';
FLUSH PRIVILEGES;

Crea un Account Amministrativo Separato

Invece di utilizzare direttamente l’account root, è consigliato creare un account amministrativo dedicato per compiti specifici.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'StrongAdminPassword';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

Applica il Principio del Minimo Privilegio

Migliora la sicurezza concedendo a ciascun utente solo i privilegi minimi necessari.

Controlla i Privilegi Esistenti

SHOW GRANTS FOR 'username'@'hostname';

Revoca i Privilegi Non Necessari

REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'hostname';

Automatizza la Configurazione di Sicurezza MySQL

MySQL fornisce il comando mysql_secure_installation per semplificare la configurazione di sicurezza. Eseguendo questo comando, puoi:

  • Rimuovere account di test e database
  • Disabilitare l’accesso remoto root
  • Applicare politiche di sicurezza

Comando di Esecuzione

sudo mysql_secure_installation

Esegui Backup Regolari

Come parte del rafforzamento della sicurezza, i backup regolari del database sono altamente raccomandati. Questo garantisce che tu possa ripristinare i dati in caso di problemi imprevisti.

Esempi di Backup

  1. Backup di tutti i database:
    mysqldump -u root -p --all-databases > backup.sql
    
  1. Backup di un database specifico:
    mysqldump -u root -p database_name > database_name_backup.sql
    

5. Domande Frequenti (FAQ)

Sotto ci sono domande frequenti e risposte riguardanti la gestione della password root di MySQL e la configurazione di sicurezza. Usa questa sezione per il troubleshooting e la risoluzione di ulteriori preoccupazioni.

Q1. Non riesco a trovare la password iniziale di MySQL nel log. Cosa dovrei fare?

A1:
In MySQL 5.7 e successive, la password iniziale è registrata nel file di log (tipicamente /var/log/mysqld.log). Tuttavia, se il file di log non può essere trovato o è stato eliminato, prova quanto segue:

  1. Reinstallando MySQL verrà generata una nuova password temporanea.
  2. Se non riesci ancora ad accedere, fai riferimento a “Cosa Fare Se Hai Dimenticato la Password Root” e resetta la password.

Q2. Gli utenti diversi da root possono cambiare le loro password usando la stessa procedura?

A2:
Sì, gli utenti diversi da root possono cambiare le loro password usando lo stesso metodo. Tuttavia, sono richiesti privilegi amministrativi per quell’utente. Usa il seguente comando:

ALTER USER 'username'@'hostname' IDENTIFIED BY 'NewStrongPassword';

Q3. Il comando mysqld_safe non è trovato. Cosa dovrei fare?

A3:
Su alcune distribuzioni Linux, mysqld_safe potrebbe non essere installato. In questo caso, puoi avviare MySQL con l’opzione --skip-grant-tables usando il comando mysqld:

sudo mysqld --skip-grant-tables &

Tuttavia, poiché questo disabilita l’autenticazione, si applicano le stesse precauzioni di sicurezza.

Q4. Ho cambiato la password ma non riesco ancora ad accedere. Perché?

A4:
Possibili cause includono quanto segue:

  1. Le informazioni sui privilegi non sono state aggiornate: Dopo aver cambiato la password, esegui il seguente comando per aggiornare i privilegi:
    FLUSH PRIVILEGES;
    
  1. Errore di digitazione: Assicurati che le lettere maiuscole, minuscole e i caratteri speciali nella nuova password siano inseriti correttamente.
  2. Restrizioni della politica delle password: MySQL potrebbe rifiutare password deboli basate sulla sua politica di sicurezza. Controlla le impostazioni della politica e usa una password più forte.

Q5. C’è un modo per rafforzare la sicurezza di MySQL tutto in una volta?

A5:
Per configurare efficientemente le impostazioni di sicurezza di MySQL, è raccomandato usare il comando mysql_secure_installation. Questo comando esegue automaticamente quanto segue:

  • Rimuove utenti di test e database
  • Disabilita l’accesso remoto root
  • Applica una politica di password forte

Esegui il comando come segue:

sudo mysql_secure_installation

Q6. La gestione delle password differisce a seconda della versione di MySQL?

A6:
Sì, il metodo di gestione della password root potrebbe differire a seconda della versione di MySQL. Le principali differenze sono:

  • MySQL 5.7 e successive: Una password temporanea viene generata automaticamente e registrata nel file di log.
  • MySQL 5.6 e precedenti: La password iniziale potrebbe essere vuota (nessuna password impostata).

Per controllare la tua versione di MySQL, usa il seguente comando:

mysql --version

Q7. Come posso consentire connessioni remote per l’utente root?

A7:
Per motivi di sicurezza, l’accesso remoto come root non è consigliato. Tuttavia, se necessario, è possibile abilitarlo con i seguenti comandi:

  1. Consenti l’accesso remoto:
    UPDATE mysql.user SET host = '%' WHERE user = 'root';
    
  1. Ricarica le informazioni sui privilegi:
    FLUSH PRIVILEGES;
    

Importante:
Se consenti l’accesso remoto, assicurati di implementare misure di sicurezza aggiuntive come regole del firewall e restrizioni IP.

Q8. Puoi spiegare brevemente i passaggi per reimpostare la password di root?

A8:

  1. Arresta il servizio MySQL:
    sudo systemctl stop mysqld
    
  1. Avvia MySQL con l’autenticazione disabilitata:
    sudo mysqld_safe --skip-grant-tables &
    
  1. Reimposta la password:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
    FLUSH PRIVILEGES;
    
  1. Riavvia il servizio MySQL:
    sudo systemctl restart mysqld