web-dev-qa-db-fra.com

MySQL: impossible d'accéder au compte root

J'exécute MySQL 5.x sur ma boîte Windows locale et, en utilisant l'administrateur MySQL, je ne peux pas me connecter aux bases de données que j'ai créées en utilisant le compte root. L'erreur que j'obtiens est:

Erreur MySQL numéro 1045 Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: OUI)

Je ne me souviens pas avoir changé les informations d'identification du compte root, mais je sais que j'ai essayé de donner à d'autres ordinateurs du réseau local un accès à la base de données en ajoutant leurs adresses IP. Une chose que j'ai faite pour l'une des adresses IP a été de spécifier l'accès au compte 'root' au lieu de root, c'est-à-dire que j'ai entouré root de caractères de guillemet simple. Tous utilisant l'administrateur MySQL. Serait-ce la raison pour laquelle je ne peux pas me connecter en utilisant root?

De plus, existe-t-il un moyen de créer un nouveau compte ou de réinitialiser le compte root? Comme mentionné précédemment, j'ai un accès complet à ma box.

Voir ces questions

17
NogFather

Vous pouvez utiliser les fichiers init. Consultez la documentation officielle de MySQL sur Comment réinitialiser le mot de passe root (y compris les commentaires pour des solutions alternatives).

Donc, en gros, en utilisant des fichiers init, vous pouvez ajouter toutes les requêtes SQL dont vous avez besoin pour réparer votre accès (telles que GRAND, CREATE, FLUSH PRIVILEGES, etc.) dans le fichier init (n'importe quel fichier).

Voici mon exemple de récupération de compte root:

echo "CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';" > your_init_file.sql
echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;" >> your_init_file.sql 
echo "FLUSH PRIVILEGES;" >> your_init_file.sql

et après avoir créé votre fichier, vous pouvez exécuter:

killall mysqld
mysqld_safe --init-file=$PWD/your_init_file.sql

puis pour vérifier si cela a fonctionné, appuyez sur Ctrl+Z et tapez: bg pour exécuter le processus du premier plan à l'arrière-plan, puis vérifiez votre accès en:

mysql -u root -proot
mysql> show grants;
+-------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' |

Voir également:

19
kenorb

Cela a fonctionné pour moi:

https://blog.dotkam.com/2007/04/10/mysql-reset-lost-root-password/

Étape 1: Arrêtez le démon MySQL s'il est en cours d'exécution

  ps -ef | grep mysql      - checks if mysql/mysqld is one of the running processes.

  pkill mysqld             - kills the daemon, if it is running.

Étape 2: exécuter le démon sécurisé MySQL en ignorant les tables de droits

  mysqld_safe --skip-grant-tables &

  mysql -u root mysql

Étape 3: Connectez-vous à MySQL en tant que root sans mot de passe

  mysql -u root mysql

Étape 4: exécutez la requête UPDATE pour réinitialiser le mot de passe root

  UPDATE user SET password=PASSWORD("value=42") WHERE user="root";
  FLUSH PRIVILEGES;

Dans MySQL 5.7, le champ 'mot de passe' a été supprimé, maintenant le nom du champ est 'chaîne_authentification':

  UPDATE user SET authentication_string=PASSWORD("42") WHERE 
  user="root";
  FLUSH PRIVILEGES;

Étape 5: Arrêtez le démon sécurisé MySQL

Étape 6: Démarrez le démon MySQL

5
SimonVonDerGoltz

J'ai eu le même problème lors de l'accès à mysql avec root. Le problème que j'ai trouvé est que certains fichiers de base de données n'ont pas l'autorisation de l'utilisateur mysql, qui est l'utilisateur qui a démarré le démon du serveur mysql.

Nous pouvons vérifier cela avec ls -l /var/lib/mysql, si l'utilisateur mysql n'a pas la permission de lire ou d'écrire sur certains fichiers ou répertoires, cela pourrait poser problème. Nous pouvons changer le propriétaire ou le mode de ces fichiers ou répertoires avec chown/chmod commandes.

Après ces modifications, redémarrez le démon mysqld et connectez-vous avec root avec la commande:

mysql -u root

Modifiez ensuite les mots de passe ou créez d'autres utilisateurs pour vous connecter à mysql.

HTH

1
Shumin Guo

Il y a une section dans le manuel MySQL sur comment réinitialiser le mot de passe root qui résoudra votre problème.

1
Dave Webb