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

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

我尝试使用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代码:

  1. const express = require('express');
  2. const cors = require('cors');
  3. const mysql = require('mysql');
  4. const app = express();
  5. const SELECT_ALL_QUERY = 'SELECT * FROM project.react_test';
  6. const connection = mysql.createConnection({
  7. host:'localhost',
  8. user:'avd',
  9. password:'password',
  10. database:'project',
  11. insecureAuth : true
  12. });
  13. const pool = mysql.createPool({
  14. host : 'localhost',
  15. user : 'avd',
  16. password : 'password',
  17. authentication_string : 'root',
  18. insecureAuth : true
  19. });
  20. //var pool = mysql.createPool(connection);
  21. connection.connect(err => {
  22. if(err) {
  23. return err;
  24. }
  25. })
  26. console.log(connection);
  27. app.use(cors());
  28. app.get('/', (req,res) => {
  29. res.send('hello from product server')
  30. });
  31. app.get('/hola', (req,res) => {
  32. res.send('hola')
  33. });
  34. app.get('/hotels_info', (req,res) => {
  35. connection.query(SELECT_ALL_QUERY, (err, results) => {
  36. if(err){
  37. return res.send(err)
  38. } else {
  39. return res.json({
  40. data: results
  41. })
  42. }
  43. });
  44. });
  45. app.listen(4000, () => {
  46. console.log('Product server listining port 4000');
  47. });

使用单个连接时出错:{“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}
我不知道该怎么做了!请引导我!提前谢谢!

暂无答案!

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

相关问题