mysql 8.0和使用express的node js的连接问题

xnifntxz  于 2021-06-25  发布在  Mysql
关注(0)|答案(0)|浏览(290)

我尝试使用express将mysql 8.0表中的信息提取到node js中。但我不断地得到错误er\u不支持\u身份验证模式。我尝试了很多方法,例如:
更改单个用户(并使用多个不同用户)的身份验证方法-将其从sha 256更改为caching 256,并更改为默认值(mysql\u native\u password),两者都不起作用。
更改我的节点js代码:我没有使用单一的连接,在致命错误之后给我错误协议排队,而是将其更改为连接池,但仍然得到错误er不支持的auth方法。
我发现mysql服务器使用SHA256密码私钥和公钥,但我不知道如何实现它或在节点中使用它。js公司。
我的数据库表:react\u test
产品|产品|名称|产品|价格1 | | 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\u enqueue\u after\u fatal\u error”,“fatal”:false}
使用连接池时出错:{“code”:“er\u not\u supported\u auth\u mode”,“errno”:1251,“sqlmessage”:“客户端不支持服务器请求的身份验证协议;考虑升级mysql client“,”sqlstate“:”08004“,”fatal“:true}
我不知道该怎么做了!请引导我!提前谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题