mysql

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

  • No he podido solucionar mi problema, yo estoy tratando de instalar un script php y me sale este error y nada

  • Excelente blog, te filicito. Aunque ninguna de tus soluciones me funciono, mi problema era que tenia 2 instancias de MySql y me faltaba especificar el puerto, asi: "...; port=3390"

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.