Ci si va di nuovo. Hai appena creato una macchina virtuale per fare alcuni test, installato MySQL usando il tuo gestore di pacchetti preferito, avviato il server e non sei riuscito a connetterti:

$ mysql --user=root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Dalla versione 5.,7, MySQL è sicuro per impostazione predefinita:

  • un random password di root è generato al momento di installazione, è necessario leggere la password dal server log
  • devi modificare la password la prima volta che si collega
  • è possibile utilizzare una password vuota a causa della validate_password plugin

Questo è tutto, buona sicurezza. Ma se stai solo installando MySQL su una VM locale per il tuo test, questo può diventare davvero fastidioso.

Per rimuovere la password di root MySQL, basta eseguire il seguente script subito dopo l’installazione e l’avvio del server MySQL:

Su MySQL 5.,7:

On MySQL 8.0:

Note: you must execute this script as root.,

Lo script esegue le azioni seguenti:

  • legge la password temporanea dal file di log
  • cambia la password con un’altra password temporanea che passa il validate_password controlli
  • disinstalla il validate_password plugin (o di un componente in MySQL 8)
  • consente di impostare una password vuota

ora È possibile stabilire la connessione senza password:

prestare attenzione che questo lascia vostra installazione di MySQL, non protetta, non si dovrebbe usare questo per qualcosa di serio!,

Un’alternativa sicura

Se si utilizza principalmente MySQL dalla riga di comando, è possibile mantenere l’accountroot protetto da una password, evitando comunque l’inconveniente di dover fornire la password sulla riga di comando.

Basta creare un~/.my.cnf file:


user = root
password = xxx

Ora puoi semplicemente digitaremysql, e il client MySQL accederà automaticamente con queste credenziali.