Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQLSTATE[HY000] [1045] Acesso negado para usuário 'username'@'localhost' usando CakePHP


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.