sql >> Base de Datos >  >> RDS >> Mysql

SQLSTATE[HY000] [1045] Acceso denegado para el usuario 'nombre de usuario'@'localhost' usando CakePHP

Ese mensaje de error generalmente significa que la contraseña que estamos usando no coincide con lo que MySQL cree que debería ser la contraseña para el usuario con el que nos estamos conectando, o que no existe un usuario de MySQL coincidente (no se ha creado). /P>

En MySQL, un usuario se identifica por un nombre de usuario ("test2") y un anfitrión ("localhost").

El mensaje de error identifica al usuario ("test2") y el host valores ("localhost")...

  'test2'@'localhost'

Podemos verificar si el usuario existe, usando esta consulta de un cliente desde el que podemos conectarnos:

 SELECT user, host FROM mysql.user

Estamos buscando una fila que tenga "test2" para usuario y "localhost" para host .

 user     host       
 -------  -----------
 test2     127.0.0.1  cleanup
 test2     ::1        
 test2     localhost  

Si esa fila no existe, entonces el host puede configurarse con un valor comodín de % , para que coincida con cualquier otro host que no coincida.

Si la fila existe, es posible que la contraseña no coincida. Podemos cambiar la contraseña (si estamos conectados como un usuario con privilegios suficientes, por ejemplo, root

 SET PASSWORD FOR 'test2'@'localhost' = PASSWORD('mysecretcleartextpassword')

También podemos verificar que el usuario tiene privilegios sobre los objetos en la base de datos.

 GRANT SELECT ON jobs.* TO 'test2'@'localhost' 

EDITAR

Si hacemos cambios en las tablas de privilegios de mysql con operaciones DML (INSERTAR, ACTUALIZAR, ELIMINAR), esos cambios no tendrán efecto hasta que MySQL vuelva a leer las tablas. Podemos hacer que los cambios sean efectivos forzando una nueva lectura con un FLUSH PRIVILEGES instrucción, ejecutada por un usuario privilegiado.