如何解决Node.js应用在cPanel上连接MySQL时的ECONNREFUSED错误?
解决Node.js使用mysql包连接MySQL时的connect ECONNREFUSED错误
确认MySQL服务状态
先检查MySQL服务是否正常运行:- Linux系统执行
systemctl status mysql查看状态,未启动则运行systemctl start mysql启动服务 - Windows系统在「服务」列表中找到MySQL,确认其处于运行状态,未启动则手动启动
- Linux系统执行
核对连接参数准确性
这是最常见的错误根源,逐一检查:host:本地连接用localhost或127.0.0.1,远程连接需填正确的主机IPport:默认是3306,若修改过MySQL端口需对应调整user/password:确保账号密码无拼写错误,避免特殊字符未转义的问题(可先用纯文本密码测试)database:确认数据库名称拼写正确且已存在
排查防火墙与安全组设置
- 本地防火墙需允许3306端口的入站/出站请求
- 远程主机的安全组(如云服务商提供的)需开放3306端口给你的应用服务器IP,临时可开放所有IP测试(生产环境禁止)
开启MySQL远程访问权限(针对远程连接场景)
- 修改MySQL配置文件(my.cnf/my.ini),将
bind-address改为0.0.0.0(允许所有IP访问)或指定你的应用服务器IP,之后重启MySQL服务 - 给数据库账号授权远程访问:
GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'your_app_ip' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES;
- 修改MySQL配置文件(my.cnf/my.ini),将
测试网络连通性
用命令测试目标主机的3306端口是否可达:- Linux/macOS执行
nc -zv your_host 3306 - Windows执行
telnet your_host 3306
若端口不通,优先排查网络或防火墙问题;端口通则回到应用代码检查
- Linux/macOS执行
检查代码与包版本
确保mysql包安装正确,且连接代码无语法错误,示例如下:const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'your_password', database: 'your_db' }); connection.connect(err => { if (err) { console.error('连接失败: ' + err.stack); return; } console.log('已连接,连接ID: ' + connection.threadId); });
内容的提问来源于stack exchange,提问作者Oualid Sahnoun
相关产品推荐
相关产品推荐

