Solución a error 1045 access denied for user (using password: YES) | MySQL

Tal vez uno de los errores más comunes del motor de base de datos MySQL es aquel que dice algo como lo siguiente:

Error 1045: Access denied for user ‘usuario’@’host’ (using password: YES)

Este error puede ser causado desde la CLI, o al conectarnos desde un lenguaje de programación. Así que hoy veremos la solución a este problema, la cual, la mayoría de veces es escribir correctamente la contraseña y el usuario.

Aunque no todo es así de fácil, ya que a veces hay errores muy específicos que dependen del lenguaje, sistema operativo o versión de servidor. En este post veremos la mayoría de soluciones, pero si no queda, puedes comentar.

Antes de todo

Si no sabes de MySQL, mira cómo administrarlo desde la CLI. También te invito a ver cómo crear usuarios en MySQL y darles permiso.

Solución 1: escribe correctamente el usuario y la contraseña

Seguramente tú crees que lo estás haciendo correctamente pero puede que no. Verifica muchas veces que el usuario y la contraseña sean correctos. A veces incluso un espacio o mayúscula hacen la diferencia. Por ejemplo, no es lo mismo usar la contraseña hunter2 que usar la que es Hunter2.

Igualmente verifica que tu teclado tenga la distribución correcta. Por ejemplo, supongamos que la contraseña lleva la letra ñ pero tu teclado está configurado de tal manera que al escribirla se escribe otra letra; y como la mayoría de veces, cuando se pide la contraseña no se muestra nada, puedes estar escribiéndola mal.

Finalmente, mejor copia y pega los valores; pero cópialos de un editor de texto plano; si los copias de otro lugar a veces se van con todo y espacios.

Solución 2: quita el arroba de la contraseña

En algunos lenguajes de programación se usa el símbolo de arroba @ para separar el host del usuario y la contraseña. La cadena se ve algo así:

usuario:pass@tcp(host:puerto)/nombreBD

El problema es cuando ponemos el símbolo del arroba; si estamos concatenando entonces habrá un error ya que tomará el host como lo que hay después del arroba; creando conflictos.

¿Mi recomendación? quita el arroba de las contraseñas. Eso sí, utiliza contraseñas largas y seguras, pero sin ese símbolo. O también puedes leer la documentación del driver que uses y ver si hay alguna forma de enviar la cadena codificada.

Solución 3: no uses root

Esto me pasó a mí recientemente. Desde el lenguaje de programación Go me estaba intentando conectar a MySQL con el usuario root para hacer unas pruebas locales; había problemas así que mejor hice un nuevo usuario, le di permisos y todo funcionó de maravilla.

Esto es debido a que a veces el usuario root no usa la autenticación nativa, sino la que es a través del socket; sobre todo en sistemas de Linux.

Solución 4: si estás desde un lenguaje de programación, mejor inténtalo desde la CLI

De tanto programar, a veces nos confundimos. Si algo no te sale, primero intenta loguearte desde la CLI con las credenciales que estás usando en el lenguaje de programación.

Solución 5: cambia el host

En algunos casos, no conecta a localhost pero sí a 127.0.0.1; o viceversa. Así que puedes probar cambiando el host; eso sí, cuando te conectas a otras IP’s debes verificar que la conexión remota esté permitida; ya que a veces, por seguridad, sólo se aceptan conexiones locales.

Más soluciones

Si sigues teniendo el error 1045 puedes dejar un comentario con tu problema y posible solución en caso de que la hayas encontrado; eso sí, recuerda primero probar todas las soluciones posibles.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

2 comentarios en “Solución a error 1045 access denied for user (using password: YES) | MySQL”

Dejar un comentario