Node.js无法连接Windows本地MySQL数据库,遭遇ECONNREFUSED错误
解决Node.js连接Windows本地MySQL时的ECONNREFUSED错误
看你的错误信息:Error: connect ECONNREFUSED ::1:3306,这里的::1是IPv6的本地回环地址,说明Node.js把localhost解析成了IPv6,但你的MySQL大概率没开启IPv6监听,只在IPv4的127.0.0.1上等待连接,所以才会被拒绝。
最快解决办法:强制用IPv4连接
直接把代码里的host: 'localhost'改成host: '127.0.0.1',让Node.js通过IPv4发起连接,修改后的代码如下:
const mysql = require('mysql'); const conn = mysql.createConnection({ host: '127.0.0.1', // 替换原localhost user: 'root', password: '********', database: "our_library", port: 3306 }); conn.connect((error) => { if(error){ throw error; return; } console.log("Connection established successfully"); }); conn.end((error) => { });
纠正socketPath的误解
Windows上的MySQL默认不使用Unix socket(这是Linux/macOS环境的特性),所以你完全不需要找socket路径,这个思路是错的,别在这上面浪费时间。
额外排查点(如果改host后仍报错)
- 确认MySQL服务正在运行:打开Windows服务管理器,找到MySQL服务,检查状态是否为“正在运行”,未运行则手动启动。
- 检查端口占用:打开命令行执行
netstat -ano | findstr :3306,确认3306端口没有被其他程序占用。 - 验证root用户权限:登录MySQL控制台,执行
SELECT user, host FROM mysql.user WHERE user='root';,确保存在host为localhost或127.0.0.1的记录;如果没有,执行GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '你的密码';授权,再执行FLUSH PRIVILEGES;生效。 - 开启IPv6监听(可选):如果想继续用
localhost,可以修改MySQL配置文件(一般在C:\ProgramData\MySQL\MySQL Server X.X目录下的my.ini),找到bind-address配置项,改成bind-address = ::,然后重启MySQL服务,使其同时监听IPv4和IPv6地址。
内容的提问来源于stack exchange,提问作者astroguy
相关产品推荐
相关产品推荐

