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

不关闭防火墙如何解决MySQL连接报错ECONNREFUSED问题?

MySQL连接ECONNREFUSED报错排查方案

ECONNREFUSED 报错核心原因是Node.js进程无法和本地3306端口的服务建立TCP连接,排除防火墙规则问题后,可按以下步骤排查:

  • 确认MySQL服务处于运行状态
    绝大多数此类报错都是MySQL服务未启动导致:
    • Windows:运行输入services.msc打开服务列表,找到MySQL对应服务,右键选择启动即可
    • macOS:brew安装的MySQL执行sudo brew services start mysql,dmg安装的可在系统设置面板找到MySQL入口点击启动
    • Linux:执行sudo systemctl start mysql(Debian/Ubuntu)或sudo systemctl start mysqld(CentOS/RHEL)
      服务启动后可先在终端执行mysql -u todos_app -p,输入密码todos_app测试能否正常登录,登录成功后再运行Node项目代码。
  • 确认MySQL监听端口配置正确
    部分自定义安装的MySQL会修改默认监听端口,不会使用3306:
    打开MySQL配置文件(Windows为my.ini,Linux/macOS为my.cnf),查找port配置项,确认实际监听端口。如果端口不是3306,需要在createPool的配置中新增对应port字段,示例:
    const pool = mysql.createPool({
        host: 'localhost',
        port: 3307, // 替换为你实际的MySQL端口
        user: 'todos_app',
        password: 'todos_app',
        database: 'todos_app'
    });
    
  • 确认MySQL用户权限配置正确
    如果todos_app用户仅允许127.0.0.1地址登录,不允许localhost登录也会触发连接失败,可先尝试将代码中host字段值改为127.0.0.1测试。也可以直接登录MySQL给用户赋权:
    GRANT ALL PRIVILEGES ON todos_app.* TO 'todos_app'@'localhost' IDENTIFIED BY 'todos_app';
    FLUSH PRIVILEGES;
    
  • 更换兼容的MySQL连接包
    你当前使用的mysqlnpm包已停止维护,对MySQL 8.0及以上版本的默认密码认证插件支持不佳,可更换为官方推荐的mysql2包,API完全兼容无需修改业务代码:
    执行安装命令:npm install mysql2
    将导入语句替换为:import * as mysql from 'mysql2'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:51:02