web-dev-qa-db-fra.com

MySQL - accès refusé pour l'utilisateur root @ localhost

J'essayais de donner un accès à distance à MySQL, car MySQL ne fonctionnait que localement.

J'ai suivi ce guide http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

J'ai utilisé une commande comme celle-ci à partir du tutoriel:

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

Je pense que cela a foiré le mysql local.

Maintenant je ne peux pas me connecter avec:

$ mysql -u root -p

je reçois cette erreur:

Accès refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: oui)

Maintenant, je sais que le mot de passe est correct, car il fonctionnait auparavant. mais je me suis accidentellement enfermé dehors ..

Je ne sais plus quoi faire.

Le système d'exploitation utilisé par le serveur est Ubuntu.

2
Sizzling Code

Vous pouvez essayer la procédure de récupération régulière:

  1. Arrêtez le service MySQL
  2. Exécutez le service en utilisant:

    Sudo mysqld_safe --skip-grant-tables &
    
  3. Connecter (le mot de passe ne sera pas requis):

    mysql -uroot
    
  4. Annulez vos modifications (faites attention cette fois-ci et vérifiez avec select quel est l'état actuel, l'hôte doit être 202.54.10.20):

    use mysql;
    update user set Host='localhost' where user='root';
    flush privileges;
    
  5. Redémarrez MySQL normalement

3
techraf

Essayez cette commande:

SHOW GRANTS FOR 'root'@'localhost';

Cela peut également se produire si vous ne disposez pas de privilèges appropriés. vous pouvez même taper la commande suivante:

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

J'ai eu le même problème (mis à jour de manière incorrecte l'utilisateur Host de virtualmin) et je l'ai corrigé avec des étapes similaires à la réponse de @techraf, mais en suivant les étapes similaires de ce site pour éviter l'erreur can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' dans Ubuntu 16.04:

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

J'ai modifié les étapes pour mettre à jour l'hôte au lieu du mot de passe:

# 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

puis dans 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;

Et puis dans la console:

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