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
相关产品推荐
相关产品推荐

