Това съобщение за грешка обикновено означава, че или паролата, която използваме, не съвпада с това, което MySQL смята, че паролата трябва да бъде за потребителя, с който се свързваме, или съответстващ потребител на MySQL не съществува (не е създаден).
В MySQL потребителят се идентифицира както с потребителско име („test2“) и хост ("localhost").
Съобщението за грешка идентифицира потребителя ("test2") и хост ("localhost") стойности...
'test2'@'localhost'
Можем да проверим дали потребителят съществува, като използваме тази заявка от клиент, от който можем да се свържем:
SELECT user, host FROM mysql.user
Търсим ред, който съдържа „test2“ за потребител и "localhost" за хост .
user host
------- -----------
test2 127.0.0.1 cleanup
test2 ::1
test2 localhost
Ако този ред не съществува, тогава хостът може да бъде настроен на заместваща стойност %
, за да съответства на всеки друг хост, който не съответства.
Ако редът съществува, паролата може да не съвпада. Можем да променим паролата (ако сме свързани като потребител с достатъчни привилегии, напр. root
SET PASSWORD FOR 'test2'@'localhost' = PASSWORD('mysecretcleartextpassword')
Можем също така да проверим дали потребителят има привилегии върху обекти в базата данни.
GRANT SELECT ON jobs.* TO 'test2'@'localhost'
РЕДАКТИРАНЕ
Ако направим промени в таблиците с привилегии на mysql с DML операции (INSERT,UPDATE,DELETE), тези промени няма да влязат в сила, докато MySQL не прочете отново таблиците. Можем да направим промените ефективни, като принудим повторно четене с FLUSH PRIVILEGES
изявление, изпълнено от привилегирован потребител.