Die foutmelding betekent meestal dat ofwel het wachtwoord dat we gebruiken niet overeenkomt met wat MySQL denkt dat het wachtwoord zou moeten zijn voor de gebruiker waarmee we verbinding maken, of dat er geen overeenkomende MySQL-gebruiker bestaat (is niet aangemaakt).
In MySQL wordt een gebruiker geïdentificeerd door zowel een gebruikersnaam ("test2") en een host ("localhost").
De foutmelding identificeert de gebruiker ("test2") en de host ("localhost") waarden...
'test2'@'localhost'
We kunnen controleren of de gebruiker bestaat, met behulp van deze vraag van een client waarmee we verbinding kunnen maken:
SELECT user, host FROM mysql.user
We zijn op zoek naar een rij met "test2" voor gebruiker , en "localhost" voor host .
user host
------- -----------
test2 127.0.0.1 cleanup
test2 ::1
test2 localhost
Als die rij niet bestaat, kan de host worden ingesteld op een jokerteken van %
, om te matchen met een andere host die geen match is.
Als de rij bestaat, komt het wachtwoord mogelijk niet overeen. We kunnen het wachtwoord wijzigen (als we verbonden zijn als gebruiker met voldoende rechten, bijvoorbeeld root
SET PASSWORD FOR 'test2'@'localhost' = PASSWORD('mysecretcleartextpassword')
We kunnen ook controleren of de gebruiker privileges heeft voor objecten in de database.
GRANT SELECT ON jobs.* TO 'test2'@'localhost'
BEWERKEN
Als we wijzigingen aanbrengen in mysql-privilegetabellen met DML-bewerkingen (INSERT,UPDATE,DELETE), worden die wijzigingen pas van kracht nadat MySQL de tabellen opnieuw heeft gelezen. We kunnen wijzigingen effectief maken door een herlezing te forceren met een FLUSH PRIVILEGES
statement, uitgevoerd door een bevoorrechte gebruiker.