MySQL: acceso denegado al usuario root@localhost

MySQL: acceso denegado al usuario root@localhost

Estaba intentando dar acceso remoto a MySQL, ya que MySQL solo funcionaba localmente.

Seguí esta guía http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

Usé un comando como este del tutorial:

mysql> update user set Host='202.54.10.20' where user='root';

Creo que esto arruinó el mysql local.

Ahora no puedo iniciar sesión con:

$ mysql -u root -p

me sale este error:

Acceso denegado para el usuario 'root'@'localhost' (usando contraseña: Sí)

Ahora sé que la contraseña es correcta, ya que solía funcionar antes. pero accidentalmente me quedé afuera.

Ya no sé qué hacer.

El sistema operativo utilizado por el servidor es Ubuntu.

Respuesta1

Puede probar el procedimiento de recuperación habitual:

  1. Detener el servicio MySQL
  2. Ejecute el servicio usando:

    sudo mysqld_safe --skip-grant-tables &
    
  3. Conéctese (no se requerirá contraseña):

    mysql -uroot
    
  4. Revierta sus cambios (tenga cuidado esta vez y verifique selectcuál es el estado actual, el host debería ser 202.54.10.20):

    use mysql;
    update user set Host='localhost' where user='root';
    flush privileges;
    
  5. Reinicie MySQL de la forma habitual

Respuesta2

Pruebe este comando:

SHOW GRANTS FOR 'root'@'localhost';

Esto también puede suceder si no tiene los privilegios adecuados. así que incluso puedes escribir el siguiente comando:

GRANT ALL PRIVILEGES ON `%`.* TO '[user]'@'[hostname]' IDENTIFIED BY '[password]' WITH GRANT OPTION;

Respuesta3

Tuve el mismo problema (actualicé incorrectamente el host de usuario de virtualmin) y lo solucioné con pasos similares a la respuesta de @techraf pero siguiendo pasos similares de este sitio para evitar el can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'error en ubuntu 16.04:

https://coderwall.com/p/j9btlg/reset-the-mysql-5-7-root-password-in-ubuntu-16-04-lts

Modifiqué los pasos para actualizar el host en lugar de la contraseña:

# Stop MySQL
sudo service mysql stop
# Make MySQL service directory.
sudo mkdir /var/run/mysqld
# Give MySQL user permission to write to the service directory.
sudo chown mysql: /var/run/mysqld
# Start MySQL manually, without permission checks or networking.
sudo mysqld_safe --skip-grant-tables --skip-networking &
# Log in without a password.
mysql -uroot mysql

luego en mysql:

select user, host from mysql.user; --just to check
UPDATE mysql.user SET host='localhost' WHERE User='root' AND Host='202.54.10.20'; --CHANGE the host to the one you see in the query
select user, host from mysql.user; --check again 
commit;
exit;

Y luego en la consola:

# Turn off MySQL.
sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
# Start the MySQL service normally.
sudo service mysql start

Respuesta4

Si recibe este error en Workbench, siga estos pasos.

Primero simplemente inicie sesión con su contraseña actual:

sudo mysql -u root -p

Luego cambie su contraseña porque tener una contraseña baja a veces da error.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-strong-password';

FLUSH PRIVILEGES;

Luego simplemente salga y vuelva a iniciar sesión con su nueva contraseña:

quit

sudo mysql -u root -p

Una vez que haya iniciado sesión correctamente, escriba el comando:

use mysql;

Debería mostrar un mensaje como "Base de datos modificada" y luego escribir:

UPDATE user SET plugin='mysql_native_password' WHERE User='root';

Después de ese tipo:

UPDATE mysql.user set authentication_string=PASSWORD('new-strong-password') where user='root';

Luego escribe:

FLUSH PRIVILEGES;

Luego simplemente sal:

quit

Ahora intente iniciar sesión con su nueva contraseña en su WORKBENCH. Espero que funcione. Gracias.

información relacionada