从Javascript连接MySQL时出现ECONNREFUSED错误求助
解决Node.js连接MySQL出现ECONNREFUSED ::1:3306的问题
核心问题排查与修复
1. 配置键名不匹配(最可能的原因)
你的代码中用config.dbHost、config.dbUser、config.dbPassword、config.dbName读取配置,但config.json里对应的键是db_host、db_user、db_pass、db_name——键名完全不匹配,导致代码读取到的host值为undefined,mysql模块会默认尝试连接本地IPv6地址::1:3306,触发连接拒绝错误。
修改代码里的配置读取字段,和config.json的键名对应:
const con = mysql.createConnection({ host: config.db_host, user: config.db_user, password: config.db_pass, database: config.db_name, });
2. Host配置格式错误
config.json里的db_host写了ip:3306,但mysql模块的host参数只需要IP地址,端口需单独通过port字段配置。修改如下:
更新config.json:
{ // ...其他配置 "db_host": "你的数据库IP", "db_port": 3306, // ...其他配置 }
更新代码:
const con = mysql.createConnection({ host: config.db_host, port: config.db_port, user: config.db_user, password: config.db_pass, database: config.db_name, });
3. 检查MySQL绑定地址设置
如果上述修改后仍报错,检查MySQL配置文件(my.cnf或my.ini)里的bind-address项:
- 若设置为
127.0.0.1,仅允许本地连接,远程客户端无法访问; - 需远程连接则设置为
0.0.0.0(允许所有IPv4地址)或指定你的客户端IP; - 修改后重启MySQL服务生效。
另外确认你创建的MySQL用户确实允许从当前客户端IP登录(比如user@你的客户端IP或user@%允许所有IP),且密码正确。
内容的提问来源于stack exchange,提问作者Zak
相关产品推荐
相关产品推荐

