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

Sequelize连接OVH MySQL数据库报getaddrinfo ENOTFOUND错误如何解决?

问题原因与解决方案

你遇到的SequelizeHostNotFoundError: getaddrinfo ENOTFOUND错误本质是运行Express服务的环境无法解析你填写的数据库主机域名,PHP项目可以正常连接说明数据库本身、账号密码、域名都是有效的,问题出在Node运行环境的网络配置或OVH数据库的访问限制,可按以下步骤排查:

排查步骤

  • 第一步:验证部署环境的DNS解析能力
    在你部署Express服务的服务器终端执行nslookup dodobwtdodob.mysql.db,查看是否能返回正确的数据库IP地址:
    • 如果解析失败:可以直接将db.config.js里的HOST字段替换为解析得到的IP,或者将服务器的DNS修改为公共DNS(如8.8.8.8、114.114.114.114)后重试。
    • 如果解析成功:继续往下排查。
  • 第二步:检查OVH数据库的访问白名单
    OVH的共享型MySQL数据库默认开启访问来源限制,你需要登录OVH控制台,进入对应数据库的配置页,将你部署Express服务的服务器公网IP添加到允许访问的白名单中。你之前的PHP项目可以正常连接,是因为PHP项目部署的服务器IP已经在白名单内。
  • 第三步:调整Sequelize连接配置
    你可以在Sequelize初始化参数中添加超时配置,避免连接超时被误判为解析失败,修改后的配置参考:
const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
  host: dbConfig.HOST,
  dialect: dbConfig.dialect,
  port: dbConfig.port,
  pool: {
    max: dbConfig.pool.max,
    min: dbConfig.pool.min,
    acquire: dbConfig.pool.acquire,
    idle: dbConfig.pool.idle
  },
  // 新增以下配置
  dialectOptions: {
    connectTimeout: 60000
  }
});

如果你的Express服务和OVH数据库部署在同一区域,建议优先使用OVH提供的数据库内网连接地址替换公网域名,内网连接稳定性更高,不会出现公网DNS解析失败的问题。

针对VPS部署报连接被拒绝的补充说明

该问题90%以上的概率是两个原因:

  1. VPS的公网IP没有添加到OVH数据库的访问白名单
  2. VPS的出站防火墙规则禁止了3306端口的访问,你可以在VPS终端执行telnet dodobwtdodob.mysql.db 3306验证端口连通性,若不通开放VPS的3306出站端口即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:24:01