Daar ga je weer. Je hebt net een virtuele machine gedraaid om wat testen uit te voeren, MySQL geà nstalleerd met je favoriete package manager, de server gestart en er is geen verbinding gemaakt:

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

sinds versie 5.,7, MySQL is secure-by-default:

  • een willekeurig root wachtwoord wordt gegenereerd bij de installatie; u moet dit wachtwoord lezen uit de serverlog
  • u moet dit wachtwoord wijzigen de eerste keer dat u
  • verbindt u kunt geen leeg wachtwoord gebruiken vanwege de validate_password plugin

Dit is allemaal goed qua beveiliging. Maar als je gewoon MySQL installeert op een lokale VM voor je eigen testen, kan dit echt vervelend worden.

om het MySQL root wachtwoord te verwijderen, voer je het volgende script uit direct na het installeren en starten van de MySQL server:

Op MySQL 5.,7:

On MySQL 8.0:

Note: you must execute this script as root.,

Het script voert de volgende acties uit:

  • leest het tijdelijke wachtwoord van het log bestand
  • wijzigingen dit wachtwoord aan een andere tijdelijke wachtwoord voor het doorgeven van de validate_password controles
  • verwijdert de validate_password plugin (of een component in MySQL 8)
  • stelt een leeg wachtwoord

U kunt nu verbinding maken zonder een wachtwoord:

let op dat dit laat uw MySQL-installatie onbeveiligde, moet u niet gebruiken voor iets serieus!,

een veilig alternatief

Als u voornamelijk MySQL vanaf de opdrachtregel gebruikt, kunt u het root account beveiligd houden met een wachtwoord, terwijl u het ongemak vermijdt dat u het wachtwoord op de opdrachtregel moet opgeven.

maak gewoon een ~/.my.cnf bestand:


user = root
password = xxx

u kunt nu gewoon mysql typen, en de MySQL client zal automatisch inloggen met deze referenties.