Essa mensagem de erro geralmente significa que a senha que estamos usando não corresponde ao que o MySQL pensa que a senha deve ser para o usuário com o qual estamos nos conectando, ou um usuário correspondente do MySQL não existe (não foi criado).
No MySQL, um usuário é identificado por um nome de usuário ("test2") e um host ("localhost").
A mensagem de erro identifica o usuário ("test2") e o host valores ("localhost")...
'test2'@'localhost'
Podemos verificar se o usuário existe, usando esta consulta de um cliente do qual podemos nos conectar:
SELECT user, host FROM mysql.user
Estamos procurando uma linha que tenha "test2" para usuário e "localhost" para host .
user host
------- -----------
test2 127.0.0.1 cleanup
test2 ::1
test2 localhost
Se essa linha não existir, o host poderá ser definido com o valor curinga de
%
, para corresponder a qualquer outro host que não seja uma correspondência. Se a linha existir, a senha pode não corresponder. Podemos alterar a senha (se estivermos conectados como usuário com privilégios suficientes, por exemplo,
root
SET PASSWORD FOR 'test2'@'localhost' = PASSWORD('mysecretcleartextpassword')
Também podemos verificar se o usuário possui privilégios nos objetos do banco de dados.
GRANT SELECT ON jobs.* TO 'test2'@'localhost'
EDITAR
Se fizermos alterações nas tabelas de privilégios do mysql com operações DML (INSERT,UPDATE,DELETE), essas alterações não terão efeito até que o MySQL releia as tabelas. Podemos tornar as alterações efetivas forçando uma releitura com um
FLUSH PRIVILEGES
instrução, executada por um usuário privilegiado.