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

Node.js跨服务器连接MySQL:能否通过公网IP建立远程连接?

解答:Node.js通过指定IP远程连接MySQL的问题

当然可以通过host属性指定公网IP建立远程连接啦!你的代码写法本身没毛病,报错connect ECONNREFUSED PUBLIC_IP:3307说明连接被服务器拒绝了,大概率是MySQL那边的配置或者网络防火墙没弄对,给你列几个必查的点:

  • 确认MySQL端口配置正确
    你代码里用的是3307,但MySQL默认端口是3306。得登录MySQL服务器,检查my.cnf(Linux)或my.ini(Windows)里的port参数是不是确实设为3307,改完后要重启MySQL服务才会生效。

  • 给MySQL用户授权远程访问权限
    MySQL默认创建的用户只能在本地登录,你需要给user账号开放远程访问权限。登录MySQL服务器执行以下SQL命令:

    GRANT ALL PRIVILEGES ON myDB.* TO 'user'@'%' IDENTIFIED BY 'secret';
    FLUSH PRIVILEGES;
    

    这里的%表示允许任意IP访问,为了安全,你也可以把%换成Node.js服务器的具体公网IP。

  • 检查MySQL服务器的防火墙/安全组
    这是最容易忽略的点:

    • 如果是云服务器(比如阿里云、腾讯云),要在控制台的安全组规则里添加入站规则,允许你的Node.js服务器IP访问3307端口;
    • 如果是本地服务器,要配置iptables(Linux)或Windows防火墙,放行3307端口的入站请求。
  • 测试端口连通性
    在Node.js服务器上用命令测试能不能访问MySQL的端口:

    # Telnet方式
    telnet PUBLIC_IP 3307
    # 或者nc方式(需要先安装nc)
    nc -zv PUBLIC_IP 3307
    

    如果连接失败,说明网络层面有问题,先解决这个再看代码。

  • 修改MySQL的bind-address配置
    打开my.cnf/my.ini,找到bind-address参数,默认值是127.0.0.1(只允许本地访问),要改成0.0.0.0允许所有IP访问,或者直接指定Node.js服务器的IP。修改后记得重启MySQL服务。

内容的提问来源于stack exchange,提问作者C-lio Garcia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:43:57