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

Windows环境Sequelize连接MySQL报ECONNREFUSED 127.0.0.1:3306错误

Sequelize ECONNREFUSED 127.0.0.1:3306 修复方案

针对你描述的「Shell、Workbench可正常连接,Sequelize连接被拒,更换数据库、修改端口仍无效」的现象,核心问题出在两个配置疏漏上:

1. localhost 解析差异

Windows环境下Node.js会默认将localhost优先解析为IPv6环回地址::1,但本地MySQL/MariaDB默认仅绑定IPv4环回地址127.0.0.1,不监听IPv6端口。
常规数据库客户端会在IPv6连接失败后自动重试IPv4地址,因此可以正常连接;Sequelize依赖的mysql2/mariadb驱动无此自动重试逻辑,直接抛出连接拒绝错误。

  • 修复:将Sequelize配置中的host值从localhost改为显式IPv4地址127.0.0.1,强制走IPv4连接。

2. 端口配置缺失

你贴出的Sequelize初始化代码未配置port参数,Sequelize默认始终使用3306端口发起连接。哪怕你手动把数据库服务端口改成3307,只要代码里不显式指定端口,请求还是会发到3306,必然连接失败。

  • 修复:在Sequelize配置中显式添加port字段,值和数据库实际监听端口完全一致。

修正后可直接使用的初始化代码

import { Sequelize } from 'sequelize'

export const db = new Sequelize( 'db_restaurant', 'root', '1234', {
    host: '127.0.0.1',
    port: 3306, // 若用XAMPP的3307端口此处改为3307
    dialect: 'mysql',
})

额外排查项

如果上述修改后仍无法连接,按顺序检查:

  • 执行netstat -ano | findstr "你的数据库端口",确认数据库服务确实在127.0.0.1或0.0.0.0上监听对应端口,未绑定其他特殊IP
  • 卸载多余驱动:你同时安装了mysql2和mariadb两个数据库驱动,可能存在加载冲突,建议只保留mysql2即可
  • 检查系统防火墙规则,确认Node.js进程未被禁止访问本地端口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:36:47