MySQL 8.0 – Il client non supporta il protocollo di autenticazione richiesto dal server; considerare l’aggiornamento del client MySQL

Sono un principiante node.js e MySQL e ho appena iniziato a configurare e provare un codice base. Tuttavia, non riesco a stabilire una semplice connessione al server per qualche motivo. Installa il più recente database MySQL Community 8.0 insieme a Node.JS con le impostazioni predefinite.

Questo è il mio codice 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!"); }); 

Di seguito è riportato l’errore trovato nel prompt dei comandi:

 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. (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. (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) 

Ho letto alcune cose come: https://dev.mysql.com/doc/refman/5.5/en/old-client.html https://github.com/mysqljs/mysql/issues/1507

Ma non sono ancora sicuro su come risolvere il mio problema. Qualsiasi aiuto sarebbe apprezzato: D

Esegui la seguente query in MYSQL Workbench

ALTER USER ‘root’ @ ‘localhost’ IDENTIFICATO CON mysql_native_password BY ‘password’

Prova a connetterti usando il nodo dopo averlo fatto

Utilizzando la vecchia mysql_native_password funziona:

 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; 

Questo perché la caching_sha2_password viene introdotta in MySQL 8.0, ma la versione Node.js non è ancora implementata. Puoi vedere questa richiesta di pull e questo problema per ulteriori informazioni. Probabilmente una correzione arriverà presto!

Documentazione originale che puoi trovare qui: https://dev.mysql.com/doc/dev/connector-nodejs/8.0/

 'use strict'; const mysqlx = require('@mysql/xdevapi'); const options = { host: 'localhost', port: 33060, password: '******', user: 'root', schema: 'yourconference' }; mysqlx.getSession(options) .then(session => { console.log(session.inspect()); session.close(); }).catch(err => { console.error(err.stack); process.exit(1); }); 

Il modo in cui è attualmente strutturato, si aspetta una connessione socket. Basta cambiare l’host da localhost a 127.0.0.1 come mostrato sotto per poter utilizzare una connessione standard. Dovrai anche fornire un porto. La porta predefinita è 3306

Basta eseguire MySQL Server Installer e riconfigurare il mio SQL Server … Questo ha funzionato per me.

Ho lo stesso problema con MySQL e risolvo usando XAMPP per connetterti con MySQL e interrompendo i servizi in windows per MySQL (pannello di controllo – Strumenti di amministrazione – Servizi) e nella cartella db.js (che è responsabile del database) I rendere vuota la password (qui puoi vedere 🙂

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

In Mysql Ultimo contenitore docker

 ALTER USER root IDENTIFIED WITH mysql_native_password BY 'password'; 

Per le installazioni mysql 8.0 esistenti su Windows 10 mysql, (1) avviare il programma di installazione, (2) fare clic su “recongifure” in QuickAction (a sinistra di MySQL Server) 1 , quindi (3) fare clic su Avanti per avanzare nelle prossime 2 schermate fino all’arrivo (4) in “Metodo di autenticazione”, selezionare “Usa il metodo di autenticazione legacy (Mantenere la compatibilità con MySQL 5.x” 2 (5) Continuare a fare clic finché l’installazione non è completa