2009-03-13 4 views
12

Je cours MySQL 5.x sur ma machine Windows locale et, en utilisant l'administrateur MySQL, je ne peux pas me connecter aux bases de données créées avec le compte root. L'erreur que je reçois est:MySQL: impossible d'accéder au compte root

MySQL Numéro d'erreur 1045 Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant password: YES)

Je ne me souviens pas de changer les identifiants du compte racine , mais je sais que j'ai essayé de donner aux autres ordinateurs sur le réseau local l'accès à la base de données en ajoutant leurs adresses IP. Une chose que j'ai faite pour l'un des IP était de spécifier l'accès au compte 'root' au lieu de root, c'est-à-dire que j'ai entouré la racine avec des guillemets simples. Tout en 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 compte root ou de le réinitialiser? Comme mentionné précédemment, j'ai un accès complet à ma boîte.

Voir ces questions

+1

J'ai essayé --skip-grant-tables et conencting en utilisant -u root mais je reçois toujours: Accès refusé pour l'utilisateur 'root' @ 'localhos t '(en utilisant le mot de passe: NON). –

Répondre

14

Vous pouvez utiliser les fichiers init. Consultez la documentation officielle MySQL sur How to Reset the Root Password (y compris les commentaires pour des solutions alternatives).

Donc, en utilisant essentiellement des fichiers d'initialisation, vous pouvez ajouter des requêtes SQL que vous avez besoin pour fixer votre accès (tels que GRAND, CREATE, FLUSH PRIVILEGES, etc.) dans le fichier init (tout fichier).

Voici mon exemple de récupérer le 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 une fois que vous avez 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 par:

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

Voir aussi:

+1

C'est bon, bravo. Les guides officiels semblaient juste un peu longs et maladroits ... –

+0

J'ai eu le même problème. Aussi, je dois ajouter ces lignes avant de créer une ligne d'utilisateur dans votre_init_file.sql ** drop user 'root' @ 'localhost'; privilèges de vidage; ** –

1

J'ai eu le même problème lors de l'accès MySQL avec la racine.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 la commande ls -l /var/lib/mysql, si l'utilisateur mysql n'a pas l'autorisation de lire ou d'écrire sur certains fichiers ou répertoires, cela pourrait causer des problèmes. Nous pouvons changer le propriétaire ou le mode de ces fichiers ou répertoires avec les commandes chown/chmod.

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

mysql -u root 

changer les mots de passe ou alors créer d'autres utilisateurs pour se connecter à mysql.

HTH

2

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 si elle est actuellement 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: Lancez MySQL démon en sécurité avec sauter accorder des tables

mysqld_safe --skip-grant-tables & 

    mysql -u root mysql 

Etape 3: Connexion à MySQL en tant que root sans mot de passe

mysql -u root mysql 

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

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

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

Étape 6: Démarrage du démon MySQL

Questions connexes