Det felmeddelandet betyder vanligtvis att antingen lösenordet vi använder inte stämmer överens med det som MySQL tror att lösenordet ska vara för användaren vi ansluter som, eller så finns det inte en matchande MySQL-användare (har inte skapats).
I MySQL identifieras en användare av både ett användarnamn ("test2") och en värd ("localhost").
Felmeddelandet identifierar användaren ("test2") och värden ("localhost") värden...
'test2'@'localhost'
Vi kan kontrollera om användaren finns med den här frågan från en klient som vi kan ansluta från:
SELECT user, host FROM mysql.user
Vi letar efter en rad som har "test2" för användare , och "localhost" för värd .
user host
------- -----------
test2 127.0.0.1 cleanup
test2 ::1
test2 localhost
Om den raden inte finns kan värden ställas in på jokerteckenvärdet %
, för att matcha någon annan värd som inte är en matchning.
Om raden finns kanske lösenordet inte matchar. Vi kan ändra lösenordet (om vi är anslutna som användare med tillräckliga rättigheter, t.ex. root
SET PASSWORD FOR 'test2'@'localhost' = PASSWORD('mysecretcleartextpassword')
Vi kan också verifiera att användaren har privilegier på objekt i databasen.
GRANT SELECT ON jobs.* TO 'test2'@'localhost'
REDIGERA
Om vi gör ändringar i mysql-privilegietabeller med DML-operationer (INSERT,UPDATE,DELETE), kommer dessa ändringar inte att träda i kraft förrän MySQL läser tabellerna igen. Vi kan göra ändringar effektiva genom att tvinga en ny läsning med en FLUSH PRIVILEGES
uttalande, exekveras av en privilegierad användare.