You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js 17+版本无法连接Ubuntu服务器上的MySQL问题求助

解决Node.js 17+无法连接MySQL 8.0的问题

问题根源

Node.js 17及以上版本默认将DNS解析优先级调整为IPv6优先,而你的MySQL 8.0.31服务未监听IPv6的::1地址(仅监听IPv4的127.0.0.1),导致连接请求被拒绝(错误日志中address: '::1'的信息可佐证此原因)。

解决方法

方法1:修改Node连接配置(推荐,无需改动MySQL)

将连接配置中的host从localhost改为127.0.0.1,强制使用IPv4连接:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "127.0.0.1", // 替换原有的localhost
  user: "root",
  password: "correctpasswordhere"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
});

方法2:修改MySQL配置,开启IPv6监听

编辑MySQL配置文件(通常路径为/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf),找到bind-address配置项,修改为同时监听IPv4和IPv6:

bind-address = ::
# 或者指定多个地址:bind-address = 127.0.0.1,::1

保存后重启MySQL服务:

sudo systemctl restart mysql

方法3:临时调整Node.js的DNS解析顺序

启动Node时添加--dns-result-order=ipv4first参数,强制优先使用IPv4:

node --dns-result-order=ipv4first test.js

若需永久生效,可将该参数添加到Node的环境变量或项目启动脚本中。

内容的提问来源于stack exchange,提问作者user752894

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:01:32