Den fejlmeddelelse betyder normalt, at enten den adgangskode, vi bruger, ikke stemmer overens med, hvad MySQL mener, adgangskoden skal være for den bruger, vi opretter forbindelse som, eller også eksisterer en matchende MySQL-bruger ikke (er ikke blevet oprettet).
I MySQL identificeres en bruger med både et brugernavn ("test2") og en vært ("localhost").
Fejlmeddelelsen identificerer brugeren ("test2") og værten ("localhost") værdier...
'test2'@'localhost'
Vi kan kontrollere, om brugeren findes, ved at bruge denne forespørgsel fra en klient, vi kan oprette forbindelse fra:
SELECT user, host FROM mysql.user
Vi leder efter en række, der har "test2" for bruger , og "localhost" for vært .
user host
------- -----------
test2 127.0.0.1 cleanup
test2 ::1
test2 localhost
Hvis denne række ikke eksisterer, kan værten indstilles til jokertegnværdien %
, for at matche enhver anden vært, der ikke matcher.
Hvis rækken eksisterer, matcher adgangskoden muligvis ikke. Vi kan ændre adgangskoden (hvis vi er forbundet som en bruger med tilstrækkelige privilegier, f.eks. root
SET PASSWORD FOR 'test2'@'localhost' = PASSWORD('mysecretcleartextpassword')
Vi kan også verificere, at brugeren har privilegier på objekter i databasen.
GRANT SELECT ON jobs.* TO 'test2'@'localhost'
REDIGER
Hvis vi foretager ændringer i mysql-privilegietabeller med DML-operationer (INSERT,UPDATE,DELETE), vil disse ændringer ikke træde i kraft, før MySQL genlæser tabellerne. Vi kan gøre ændringer effektive ved at tvinge en genlæsning med en FLUSH PRIVILEGES
sætning, udført af en privilegeret bruger.