Проблема с подключением для MySQL 8.0 и Node JS с использованием Express
Я пытался извлечь информацию из таблицы MySQL 8.0 в Node JS, используя Express. Но я постоянно получаю сообщение об ошибке ER_NOT_SUPPORTED_AUTH_MODE. Я пробовал много вещей, таких как:
- Изменение метода проверки подлинности для отдельного пользователя (и использования нескольких разных пользователей) - изменилось с SHA 256 на Caching 256 и на значение по умолчанию (mysql_native_password), ни один из них не работает.
- Изменение моего кода Node js: вместо того, чтобы использовать единственное соединение, которое давало мне ошибку - PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR, я изменил его на пул соединения, но все еще получаю ошибку ER_NOT_SUPPORTED_AUTH_METHOD.
Я обнаружил, что MySQL Server использует закрытый ключ пароля SHA 256 и открытый ключ, но я не знаю, как реализовать это или использовать его в Node. JS.
Моя таблица базы данных: Reaction_test
product_id | название продукта | product_price 1 | abc | 10
Вот мой код Node. js:
const express = require('express');
const cors = require('cors');
const mysql = require('mysql');
const app = express();
const SELECT_ALL_QUERY = 'SELECT * FROM project.react_test';
const connection = mysql.createConnection({
host:'localhost',
user:'avd',
password:'password',
database:'project',
insecureAuth : true
});
const pool = mysql.createPool({
host : 'localhost',
user : 'avd',
password : 'password',
authentication_string : 'root',
insecureAuth : true
});
//var pool = mysql.createPool(connection);
connection.connect(err => {
if(err) {
return err;
}
})
console.log(connection);
app.use(cors());
app.get('/', (req,res) => {
res.send('hello from product server')
});
app.get('/hola', (req,res) => {
res.send('hola')
});
app.get('/hotels_info', (req,res) => {
connection.query(SELECT_ALL_QUERY, (err, results) => {
if(err){
return res.send(err)
} else {
return res.json({
data: results
})
}
});
});
app.listen(4000, () => {
console.log('Product server listining port 4000');
});
Ошибка при использовании одного соединения: {"code":"PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR","fatal":false}
Ошибка при использовании пула соединения: {"code":"ER_NOT_SUPPORTED_AUTH_MODE","errno":1251,"sqlMessage":"Клиент не поддерживает протокол аутентификации, запрошенный сервером; рассмотрите возможность обновления клиента MySQL","sqlState":"08004","роковой": правда}
Я не знаю, что делать дальше! Пожалуйста, ведите меня! Заранее спасибо!