Det du går igjen. Du bare spinned opp en virtuell maskin for å gjøre noen tester, installert MySQL ved hjelp av din favoritt package manager, startet serveren, og klarte ikke å koble seg til på:

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

Siden versjon 5.,7, MySQL er sikker-av-standard:

  • et tilfeldig root-passordet er generert ved installasjon, du trenger å lese dette passordet fra server log
  • du har til å endre dette passordet første gang du kobler
  • du kan ikke bruke et tomt passord på grunn av validate_password plugin

Dette er alle gode sikkerhets-messig. Men hvis du bare skal installere MySQL på en lokal VM for din egen testing, dette kan bli veldig irriterende.

for Å fjerne MySQL root-passordet, bare kjør følgende script rett etter at du installerer og starter MySQL-server:

På MySQL 5.,7:

On MySQL 8.0:

Note: you must execute this script as root.,

skriptet utfører følgende handlinger:

  • leser midlertidig passord fra loggfilen
  • endringer i dette passordet til en annen midlertidig passord som passerer validate_password sjekker
  • avinstallerer validate_password plugin (eller en komponent i MySQL 8)
  • angir et tomt passord

Du kan nå koble til uten et passord:

Vær forsiktig at dette etterlater din MySQL installasjon usikret, bør du ikke bruke dette til noe alvorlig!,

En sikker alternative

Hvis du er i hovedsak bruk av MySQL fra kommandolinjen, kan du holde root konto som er beskyttet av et passord, mens de fortsatt å unngå bryet med å måtte oppgi passordet på kommandolinjen.

Bare lage en ~/.my.cnf file:


user = root
password = xxx

nå kan Du bare skrive inn mysql, og MySQL-klienten vil automatisk logge seg på med disse legitimasjon.