NodeJS/mySQL - ER_ECCESS_DENIED_ERROR Access denied for user 'root'@'localhost' (using password: YES)
Je suis tente de se connecter à mySQL via un NodeJS fichier, mais je reçois l'erreur suivante:
{ Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'localhost' (using password: YES)
at Handshake.Sequence._packetToError (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/sequences/Sequence.js:30:14)
at Handshake.ErrorPacket (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/sequences/Handshake.js:67:18)
at Protocol._parsePacket (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Protocol.js:197:24)
at Parser.write (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Parser.js:62:12)
at Protocol.write (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Protocol.js:37:16)
at Socket.ondata (_stream_readable.js:555:20)
at emitOne (events.js:101:20)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at Socket.Readable.push (_stream_readable.js:134:10)
--------------------
at Protocol._enqueue (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Protocol.js:110:26)
at Protocol.handshake (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Protocol.js:42:41)
at Connection.connect (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/Connection.js:81:18)
at Connection._implyConnect (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/Connection.js:222:10)
at Connection.query (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/Connection.js:137:8)
at Object.<anonymous> (/home/matthew/Node/mySqlTest/index.js:11:12)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
code: 'ER_ACCESS_DENIED_ERROR',
errno: 1045,
sqlState: '28000',
fatal: true }
La chose étrange est que je peux me connecter amende par le terminal en cours d'exécution mysql -u root -p
. Je ne reçois cette erreur lors de l'exécution de mon code javascript. J'ai été sur Google et StackOverflow, mais n'ont toujours pas trouvé une solution qui fonctionne. Je suis de l'utilisation de MySQL 5.7.16 sur Ubuntu 16.04.1 sur une MACHINE VIRTUELLE. Vous ne savez pas si une VM fait une différence ici. Mon code Javascript ci-dessous:
'use strict';
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password'
});
connection.query(
'SELECT "foo" AS first_field, "bar" AS second_field',
function(err, results, fields) {
console.log(err);
console.log(results);
connection.end();
}
);
J'ai essayé d'utiliser 'locahost" ainsi que "127.0.0.1" dans mon javascript. J'ai un utilisateur 'root' pour les 'localhost' et '127.0.0.1' dans mySql.de l'utilisateur sur la table et je suis capable de voir ce par l'exécution de SELECT user, host FROM mysql.user WHERE user='root';
J'ai ajouté des privilèges à l'utilisateur 'root' par l'exécution de cette:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password';
J'ai couru le dessus sur 127.0.0.1. J'ai aussi essayé ceci:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
J'ai tenté de réinitialiser le mot de passe root comme ceci:
https://help.ubuntu.com/community/MysqlPasswordReset
J'ai couru FLUSH PRIVILEGES
après chaque tentative. J'ai arrêté et redémarré mySQL. J'ai désinstallé mySQL complètement et réinstallé.
En vain. Je reçois l'erreur d'accès refusé à chaque fois que j'essaie d'exécuter le javascript, mais je n'ai absolument aucun problème quand je me connecte à mySQL via le terminal.
Des idées?
J'ai également essayé. Créé un nouvel utilisateur, et bénéficier de tous les privilèges. Je reçois le même message d'erreur "Accès refusé pour "newUser'@'localhost'.
J'ai aimé la façon dont vous avez décrit les détails de cette question. Parfait!
OriginalL'auteur mwelk11 | 2016-11-08
Vous devez vous connecter pour publier un commentaire.
Essayez d'ajouter un champ port:
});
na pas à résoudre le problème.
OriginalL'auteur Rahul Paul
Récentes de MySQL version en paquet.json résolu le problème.
J'ai été l'aide de la version 2.0.0. J'ai changé la version 2.10.2.
2.10.2 a le même problème. Version de MySQL est de 5,7.
2.16.0 a toujours les mêmes problèmes
na pas à résoudre le problème.
OriginalL'auteur mwelk11
J'ai le même problème, je l'ai résolu en changeant le mot de passe à la chaîne vide.
OriginalL'auteur zhan mei yang
//étonnamment cela fonctionne.
OriginalL'auteur micheal nayebare
J'ai eu le même problème et changer le mot de passe de l'utilisateur de base de données a fonctionné pour moi. Suivez ces étapes :
OriginalL'auteur marwari
Pour la version de mysql 2.16.0 (Septembre 2018):
il suffit de créer un nouvel utilisateur mysql.
remplacer le nom d'utilisateur et mot de passe.
OriginalL'auteur Faris Hanugraha
J'ai été confronté à ce problème en donnant le nom d'utilisateur complet dans la section utilisateur lorsque j'ai changé le 'root'@'localhost' à 'root' Il fonctionne bien maintenant.
OriginalL'auteur Vishnuvardhan
J'ai eu un problème similaire. J'étais en train de mysql dans un conteneur Docker et a eu le même message d'erreur lorsque vous essayez de vous connecter à partir de mon nœud de l'application.
Il est apparu, que j'avais couru le conteneur Docker sans exposer le port, d'où il a été 3306 à l'intérieur du conteneur, mais n'aurait pas été accessible par le biais de localhost:3306. Pourquoi je me suis ER_ACCESS_DENIED_ERROR erreur est parce que j'ai effectivement eu quelques autres serveur mysql sur le port 3306, avec un autre nom d'utilisateur et mot de passe.
Pour voir si ou ce que vous avez en cours d'exécution sur le type de port:
Puisque j'ai déjà eu quelque chose sur le port 3306, pour rendre le serveur accessible pour mon application, j'ai changé un port 3307 et exécuter mes docker mysql récipient avec la commande:
Après le démarrage de mysql client à l'intérieur de Docker avec la commande:
Et après la création d'une base de données pour se connecter, j'ai été en mesure de se connecter à ma base mysql de mon nœud de l'application de ces lignes:
Espérons-le, aide à quelqu'un de nouveau à docker et mysql 🙂
OriginalL'auteur kaiak
J'ai eu la même erreur de nodejs script, j'ai donc enlevé paramètre de mot de passe et maintenant, la magie fonctionne très bien
OriginalL'auteur hacktar
désinstaller mysql,et désinstaller mysql services connexes(par exemple. mysqld.exe xampp).ensuite,réinstaller mysql.
OriginalL'auteur popzhou