mysql_upgrade-u root-p




MySQL 8.0-Le client ne supporte pas le protocole d'authentification demandé par le serveur; envisager de mettre à jour le client MySQL (10)

Je suis un débutant de node.js et MySQL et je viens de commencer à configurer et à essayer du code de base. Cependant, je ne peux même pas établir une simple connexion au serveur pour une raison quelconque. J'installe la dernière base de données MySQL Community 8.0 avec Node.JS avec les paramètres par défaut.

Ceci est mon code node.js

    var mysql = require('mysql');

    var con = mysql.createConnection({
      host: "localhost",
      user: "root",
      password: "password",
      insecureAuth : true
    });

    con.connect(function(err) {
      if (err) throw err;
      console.log("Connected!");
    });

Vous trouverez ci-dessous l'erreur trouvée dans l'invite de commande:

C:\Users\mysql-test>node app.js
    C:\Users\mysql-test\node_modules\mysql\lib\protocol\Parse
    r.js:80
            throw err; // Rethrow non-MySQL errors
            ^

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    at Handshake.Sequence._packetToError (C:\Users\mysql-
test\node_modules\mysql\lib\protocol\sequences\Sequence.js:52:14)
    at Handshake.ErrorPacket (C:\Users\mysql-test\node_mo
dules\mysql\lib\protocol\sequences\Handshake.js:130:18)
    at Protocol._parsePacket (C:\Users\mysql-test\node_mo
dules\mysql\lib\protocol\Protocol.js:279:23)
    at Parser.write (C:\Users\mysql-test\node_modules\mys
ql\lib\protocol\Parser.js:76:12)
    at Protocol.write (C:\Users\mysql-test\node_modules\m
ysql\lib\protocol\Protocol.js:39:16)
    at Socket.<anonymous> (C:\Users\mysql-test\node_modul
es\mysql\lib\Connection.js:103:28)
    at Socket.emit (events.js:159:13)
    at addChunk (_stream_readable.js:265:12)
    at readableAddChunk (_stream_readable.js:252:11)
    at Socket.Readable.push (_stream_readable.js:209:10)
    --------------------
    at Protocol._enqueue (C:\Users\mysql-test\node_module
s\mysql\lib\protocol\Protocol.js:145:48)
    at Protocol.handshake (C:\Users\mysql-test\node_modul
es\mysql\lib\protocol\Protocol.js:52:23)
    at Connection.connect (C:\Users\mysql-test\node_modul
es\mysql\lib\Connection.js:130:18)
    at Object.<anonymous> (C:\Users\mysql-test\server.js:
11:5)
at Module._compile (module.js:660:30)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)
at Function.Module.runMain (module.js:701:10)

J'ai lu des articles tels que: https://dev.mysql.com/doc/refman/5.5/en/old-client.html https://github.com/mysqljs/mysql/issues/1507

Mais je ne sais toujours pas comment régler mon problème. Toute aide serait appréciée: D


Étapes complètes pour MySQL 8

Se connecter à MySQL

$ mysql -u root -p
Enter password: (enter your root password)

réinitialisez votre mot de passe

(Remplacez votre your_new_password mot de passe par le mot de passe que vous souhaitez utiliser)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
mysql> FLUSH PRIVILEGES;
mysql> quit

Ensuite, essayez de vous connecter en utilisant noeud


Bien que la réponse acceptée soit correcte, je préférerais créer un nouvel utilisateur, puis l’utiliser pour accéder à la base de données.

create user [email protected] identified by '[email protected]';
grant all privileges on node.* to [email protected];
ALTER USER 'nodeuser'@localhost IDENTIFIED WITH mysql_native_password BY '[email protected]';

Dans Mysql Dernier conteneur de docker

ALTER USER root IDENTIFIED WITH mysql_native_password BY 'password';

Exécuter la requête suivante dans MYSQL Workbench

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

root tant qu'utilisateur localhost tant qu'URL et password de password tant que password de passe

Essayez de vous connecter en utilisant noeud après cela.


J'ai MYSQL sur le serveur et l'application nodejs sur un autre serveur

Exécuter la requête suivante dans MYSQL Workbench

ALTER USER 'root' @ '%' IDENTIFIÉ AVEC mysql_native_password BY 'password'


J'ai le même problème avec MySQL et je résous en utilisant XAMPP pour me connecter à MySQL et arrêter les services dans Windows pour MySQL (panneau de configuration - Outils d'administration - Services), ainsi que dans le dossier db.js (responsable de la base de données) I Rendez le mot de passe vide (ici vous pouvez voir :)

const mysql = require('mysql');
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: ''
});

Pour les installations existantes de mysql 8.0 sur Windows 10, mysql,

(1) lancer l'installateur,

(2) cliquez sur "Reconfigurer" sous QuickAction (à gauche de MySQL Server), puis

(3) cliquez sur suivant pour avancer à travers les 2 écrans suivants jusqu'à arriver

(4) sous "Méthode d'authentification", sélectionnez "Utiliser une méthode d'authentification héritée (conserver la compatibilité MySQL 5.x").

(5) Continuez à cliquer jusqu'à ce que l'installation soit terminée


Si la ligne de commande ALTER USER ... ne fonctionne pas pour vous ET si vous utilisez Windows 10, essayez de suivre les étapes suivantes:

1) Tapez MySQL dans la barre de recherche de Windows

2) Ouvrez MySQL Windows Installer - Communauté

3) Recherchez "serveur MySQL" et cliquez sur Reconfigurer

4) Cliquez sur "Suivant" jusqu'à la phase "Méthode d'authentification".

5) À la phase "Méthode d'authentification", cochez la deuxième option "Utiliser la méthode d'authentification héritée".

6) Suivez ensuite les étapes données par le programme d’installation Windows jusqu’à la fin.

7) Une fois terminé, allez dans "Services" dans la barre de recherche Windows, cliquez sur "démarrer" MySql81 ".

Maintenant, essayez encore, la connexion entre MySQL et Node.js devrait fonctionner!


Utiliser l'ancien mysql_native_password fonctionne:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourRootPassword';
-- or
CREATE USER 'foo'@'%' IDENTIFIED WITH mysql_native_password BY 'bar';
-- then
FLUSH PRIVILEGES;

Cela est dû au fait que caching_sha2_password est introduit dans MySQL 8.0, mais que la version de Node.js n’est pas encore implémentée. Vous pouvez voir cette demande d'extraction et ce problème pour plus d'informations. Probablement un correctif viendra bientôt!


Vérifiez les privilèges et le nom d'utilisateur / mot de passe de votre utilisateur MySQL.

Pour détecter les erreurs, il est toujours utile d'utiliser la méthode _delegateError surchargée. Dans votre cas, cela doit ressembler à:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "password",
  insecureAuth : true
});

var _delegateError = con._protocol._delegateError;

con._protocol._delegateError = function(err, sequence) {
    if (err.fatal)
        console.trace('MySQL fatal error: ' + err.message);

    return _delegateError.call(this, err, sequence);
};

con.connect(function(err) {
  if (err) throw err;

  console.log("Connected!");
});

Cette construction vous aidera à localiser les erreurs fatales.





node.js