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

Node.js后端连接MySQL数据库出现ECONNREFUSED错误,无法获取user表数据求助

排查数据库连接拒绝(ECONNREFUSED)问题及接口数据无法返回的解决方案

从你贴的终端错误日志里,核心问题很明确:

Error en db: Error: connect ECONNREFUSED 127.0.0.1:8889

这个错误说明你的后端代码尝试连接localhost:8889的MySQL服务时被拒绝了,这也是http://localhost:3000/user接口无法返回数据的根本原因——后端连不上数据库,自然查不到数据。下面是一步步的排查和修复步骤:

1. 先确认MySQL服务是否在运行,且监听8889端口

  • Windows系统:
    打开命令提示符,执行:
    netstat -ano | findstr :8889
    
    如果没有任何输出,说明没有进程在监听这个端口,你需要启动MySQL服务。可以通过「服务」面板(按下Win+R,输入services.msc)找到MySQL相关服务,右键启动它。
  • Mac/Linux系统:
    打开终端执行:
    lsof -i :8889
    # 或者
    netstat -tulpn | grep 8889
    
    同样,没有输出的话就启动MySQL服务,比如Mac上用Homebrew安装的话可以执行brew services start mysql,Linux用sudo systemctl start mysql。

2. 核对MySQL的实际端口是否是8889

很多默认安装的MySQL用的是3306端口,只有部分工具(比如MAMP)会默认用8889。你可以:

  • 查看MySQL的配置文件(Windows是my.ini,Mac/Linux是my.cnf),找到port参数确认端口号;
  • 或者用MySQL客户端(比如MySQL Workbench、Navicat)尝试连接,看连接成功时用的端口是多少;
  • 如果实际端口不是8889,修改connection.js里的port值,比如改成3306:
    const mysqlConnection = mysql.createConnection({
     host: 'localhost',
     user: 'root',
     password: '',
     database: 'project',
     port: '3306' // 改成你的实际端口
    });
    

3. 验证数据库账号密码的正确性

你的代码里用的是user: 'root'、password: '',需要确认:

  • 你的MySQL root账号是否允许空密码登录;
  • 该账号是否允许从localhost(本地)连接。

可以直接用MySQL客户端尝试用同样的账号、密码、端口连接project数据库,如果连不上,要么修改root账号的密码,要么调整账号的连接权限(比如执行GRANT ALL ON project.* TO 'root'@'localhost' IDENTIFIED BY '你的密码';)。

4. 确认project数据库和user表存在

等数据库连接成功后,还要确保你创建的project数据库和user表确实存在。可以登录MySQL后执行:

USE project;
SHOW TABLES;

如果看不到user表,需要重新创建它。

最后测试

当你完成以上排查修复后,重新执行npm run serve,如果终端输出Db ok,说明数据库连接成功了,这时候再访问http://localhost:3000/user,应该就能拿到user表里的数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:13:14