You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React项目后端index.js连接MySQL无数据写入问题求解

Node.js连接MySQL写入数据无生效问题排查与解决

背景说明

我搭建了一个支持填写电影名称、影评并提交至数据库的前端页面,目前正在尝试将已创建的MySQL数据库与后端index.js连通,写入第一条测试数据,实现代码如下:

const express = require('express');
const app = express();
const mysql = require('mysql');

const db = mysql.createPool({
    host: "localhost",
    user: "root",
    password:"password",
    database:'CRUDDatabase',
});

app.get('/', (req, res) => {
    const sqlInsert = "INSERT INTO Movie_Reviews(movieName, movieReview) VALUES (1,'inception', 'good movie');"
    db.query(sqlInsert, (err, result) =>{
        res.send("change done");
    });
})

app.listen(3001, () => {
console.log("running on port 3001")
})

问题现象

运行代码后前端可收到返回的"change done"提示,但数据库中没有新增条目。仅在MySQL Workbench中创建了默认连接,未做其他自定义修改,不确定故障属于代码问题还是数据库配置问题。

报错信息

排查后得到核心报错内容如下:

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

解决方法

该问题是MySQL 8.x默认使用caching_sha2_password认证插件,而Node.js的mysql包暂不支持该认证模式导致,按以下步骤操作即可解决:

  • 在MySQL Workbench中执行如下查询语句,注意替换对应参数:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    其中root替换为你的数据库用户名、localhost替换为对应服务地址、password替换为你的数据库密码
  • 继续执行flush privileges;刷新权限,完成后即可通过Node正常连接数据库
  • 如果仍未生效,可尝试去掉语句中的@'localhost'部分后重新执行

内容的提问来源于stack exchange,提问作者Liebertosan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:54:04