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
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:
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
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
Il y a une section dans le manuel MySQL sur comment réinitialiser le mot de passe root qui résoudra votre problème.