Node.js无法建立MySQL连接,仅未启动XAMPP MySQL服务时报错
问题根源分析
你遇到的ECONNREFUSED错误核心原因很明确:你的Node.js程序尝试连接的MySQL服务没有处于运行状态。
你提到启动XAMPP的MySQL服务后就能正常连接,这说明XAMPP集成的MySQL服务是正常可用的,但你本地的独立MySQL服务(如果有的话)并没有启动——或者你代码里的连接配置和实际运行的MySQL服务不匹配。
具体解决步骤
1. 确认MySQL服务是否在运行
- Windows系统:按下
Win + R输入services.msc打开服务管理器,找到名称为MySQL(或者可能是MySQL80这类带版本号的)的服务,查看它的状态:- 如果状态是“已停止”,右键点击选择启动;
- 为了避免每次手动启动,你可以右键选择属性,把启动类型改成自动。
- 如果你是用独立安装包安装的MySQL(而非XAMPP集成版),务必确保这个独立服务处于运行状态,而不是只依赖XAMPP来启动MySQL。
2. 核对连接配置的准确性
你当前的代码没有指定port参数,默认会用3306端口。如果你之前尝试更换过MySQL的端口,一定要在连接配置里明确指定:
var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", port: 3307, // 替换成你实际使用的MySQL端口 user: "myusername", password: "mypassword" }); con.connect(function(err) { if (err) throw err; console.log("Connected!"); });
同时要确认user和password是对应你正在运行的MySQL服务的账号(比如XAMPP的MySQL默认用户是root,密码可能为空或你自己设置的,而独立安装的MySQL可能有不同的账号配置)。
3. 排查端口占用或防火墙问题
- 检查目标端口是否被其他程序占用:在命令提示符里执行
netstat -ano | findstr :3306(把3306换成你的MySQL端口),如果输出里有其他进程ID,说明端口被占用,可以结束对应进程,或者修改MySQL的端口。 - 确认防火墙没有拦截MySQL的端口:虽然你用XAMPP能连,但如果是独立MySQL服务,可能需要在防火墙里添加允许MySQL端口通信的规则。
总结
你之前更换端口没用,大概率是因为:要么更换的端口对应的MySQL服务没启动,要么代码里没同步更新port参数。只要确保MySQL服务在运行,且代码配置和服务的host、port、账号信息完全匹配,就能解决这个连接问题。
内容的提问来源于stack exchange,提问作者Marcus Edensky
相关产品推荐
相关产品推荐

