Tout d’abord, je travaille sous Window.
J'ai fourni les informations nécessaires avec précision (hôte, utilisateur, mot de passe, port, base de données) mais cela a donné une erreur.
code: 'ER_ACCESS_DENIED_ERROR', errno: 1045, sqlMessage: "Access denied for user 'root'@'localhost' (using password: YES)", sqlState: '28000', fatal: true
J'ai essayé de nombreuses façons de résoudre ce problème, mais toutes ont échoué. Je ne sais pas pourquoi la réinstallation de MySQL a temporairement résolu le problème. Mais lorsque j'ai redémarré mon ordinateur, l'erreur est réapparue. Je l'ai immédiatement codé, joué avec la version et essayé.
const express = require('express'); const app = express(); const mysql = require('mysql'); const port = process.env.PORT || 4000; const connection = mysql.createConnection({ host: "localhost", user: "root", password: "123456", port: "3306", database: "study01" }); console.log(connection); connection.connect(); app.listen(app.get('port'), () => console.log(`Listening on port ${port}`));
mysql server : 5.7.38 nodejs : 16.15.1 nodejs mysql : 2.18.1 nodejs express : 4.18.1
ALTER USER 'root'@'localhost' IDENTIFIED with mysql_native_password BY '123456';
Le problème est que votre compte n'a pas l'autorisation de se connecter à la base de données.
Votre commande accorde des autorisations, cependant, vous avez besoin du hachage du mot de passe du compte.
Obtenez le hachage du mot de passe que votre compte utilise
Cette sortie est ensuite transmise à la partie de hachage du mot de passe de cette commande
Le caractère% est un caractère générique il vous permet donc de vous connecter à la base de données depuis n'importe quelle adresse IP. Pour plus de sécurité, vous pouvez le restreindre uniquement à votre adresse IP
J'espère que cela vous aidera.