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:
- Detener el servicio MySQL
Ejecute el servicio usando:
sudo mysqld_safe --skip-grant-tables &
Conéctese (no se requerirá contraseña):
mysql -uroot
Revierta sus cambios (tenga cuidado esta vez y verifique
select
cuál es el estado actual, el host debería ser202.54.10.20
):use mysql; update user set Host='localhost' where user='root'; flush privileges;
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.