Résoudre les erreurs de connexion Node.js et MySQL sous Windows
P粉794177659
P粉794177659 2024-02-21 16:47:21
0
1
372

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é.

Mon code

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}`));

Versions du serveur MySQL et des modules

mysql server : 5.7.38
nodejs : 16.15.1
nodejs mysql : 2.18.1
nodejs express : 4.18.1

J'ai essayé ces choses

  • Changer le mot de passe, créer un autre utilisateur
  • ALTER USER 'root'@'localhost' IDENTIFIED with mysql_native_password BY '123456';
  • Réinstallez Node.js et npm
  • Réinstaller MySQL

P粉794177659
P粉794177659

répondre à tous(1)
P粉270891688

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

USE mysql;
SELECT Password FROM user WHERE User = 'your Username';

Cette sortie est ensuite transmise à la partie de hachage du mot de passe de cette commande

GRANT ALL PRIVILEGES ON *.* TO `your Username`@`%` IDENTIFIED BY PASSWORD 'your password hash' WITH GRANT OPTION
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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal