Saltar al contenido

Error de MySQL: ‘Acceso denegado para el usuario’ root ‘@’ localhost ‘

Luego de consultar con especialistas en esta materia, programadores de varias ramas y profesores dimos con la solución a la pregunta y la compartimos en esta publicación.

Solución:

Todas las soluciones que encontré fueron mucho más complejas de lo necesario y ninguna funcionó para mí. Aquí está la solución que resolvió mi problema. No es necesario reiniciar mysqld o iniciarlo con privilegios especiales.

sudo mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

Con una sola consulta estamos cambiando el auth_plugin a mysql_native_password y estableciendo la contraseña de root en raíz(no dude en cambiarlo en la consulta)

Ahora debería poder iniciar sesión con root. Se puede encontrar más información en la documentación de mysql

(salir de la consola mysql con Ctrl + D o escribiendo Salida)

  1. Abrió /etc/my.cnf o /etc/mysql/my.cnf, dependiendo de tu distribución.
  2. Agregar skip-grant-tables bajo [mysqld]
  3. Reiniciar Mysql
  4. Debería poder iniciar sesión en mysql ahora usando el siguiente comando mysql -u root -p
  5. Correr mysql> flush privileges;
  6. Establecer nueva contraseña por ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
  7. Vuelva a /etc/my.cnf y eliminar / comentar saltar-tablas-de-subvenciones
  8. Reiniciar Mysql
  9. Ahora podrá iniciar sesión con la nueva contraseña mysql -u root -p

Ninguna de las respuestas anteriores me ayudó con este problema, así que aquí está la solución que encontré.

La parte relevante:

En los sistemas Ubuntu que ejecutan MySQL 5.7 (y versiones posteriores), el usuario raíz de MySQL está configurado para autenticarse usando el complemento auth_socket de forma predeterminada en lugar de con una contraseña. Esto permite una mayor seguridad y usabilidad en muchos casos, pero también puede complicar las cosas cuando necesita permitir que un programa externo (por ejemplo, phpMyAdmin) acceda al usuario.

Para usar una contraseña para conectarse a MySQL como root, deberá cambiar su método de autenticación de auth_socket a mysql_native_password. Para hacer esto, abra el indicador de MySQL desde su terminal:

sudo mysql

A continuación, verifique qué método de autenticación usa cada una de sus cuentas de usuario de MySQL con el siguiente comando:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Producción

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

En este ejemplo, puede ver que el usuario root de hecho se autentica utilizando el complemento auth_socket. Para configurar la cuenta de root para que se autentique con una contraseña, ejecute el siguiente comando ALTER USER. Asegúrese de cambiar la contraseña a una contraseña segura de su elección y tenga en cuenta que este comando cambiará la contraseña de root que estableció en el Paso 2:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Luego, ejecute FLUSH PRIVILEGES que le dice al servidor que vuelva a cargar las tablas de concesión y ponga en práctica sus nuevos cambios:

FLUSH PRIVILEGES;

Verifique los métodos de autenticación empleados por cada uno de sus usuarios nuevamente para confirmar que root ya no se autentica usando el complemento auth_socket:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Producción

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Puede ver en este resultado de ejemplo que el usuario raíz de MySQL ahora se autentica con una contraseña. Una vez que confirme esto en su propio servidor, puede salir del shell MySQL:

exit

Te mostramos las reseñas y valoraciones de los usuarios

Acuérdate de que tienes la capacidad de decir si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *