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

无法远程连接GCP云Windows Server上的MySQL,报ETIMEDOUT错误

解决方案:排查Google Cloud Windows Server 2019上MySQL的远程连接超时问题

从你描述的情况来看,telnet失败但ping正常说明网络层面的TCP端口访问被阻断了,结合你的操作,以下是具体排查和修复步骤:

1. 检查Windows Server本地防火墙

GCP的入站规则只是外部访问的第一道关卡,Windows Server自带的防火墙可能会默认阻止3306端口的外部请求:

  • 打开「Windows Defender防火墙」→「高级设置」→「入站规则」
  • 新建规则:选择「端口」→ 协议选「TCP」→ 特定本地端口填3306→ 选择「允许连接」→ 按需勾选「域、专用、公网」→ 命名规则(比如「MySQL远程访问」)
  • 也可以临时关闭防火墙测试,如果能连接,就说明是本地防火墙的问题,再把规则恢复即可。

2. 修改MySQL绑定地址

MySQL默认仅监听本地127.0.0.1,需要配置为允许所有IP访问:

  • 找到MySQL配置文件my.ini(通常隐藏在C:\ProgramData\MySQL\MySQL Server X.X目录下)
  • 找到bind-address配置项,修改为:
    bind-address = 0.0.0.0
    
    如果没有这一行,直接添加到[mysqld]区块下
  • 重启MySQL服务(在「服务」列表中找到对应MySQL服务,右键选择「重启」)

3. 验证MySQL监听状态

在Windows Server的命令提示符中执行以下命令,确认MySQL是否在正确监听:

netstat -ano | findstr :3306

如果输出包含0.0.0.0:3306或服务器公网IP:3306,说明监听正常;如果只有127.0.0.1:3306,说明绑定地址配置未生效,需要重新检查my.ini。

4. 确认用户权限配置正确性

虽然你已经执行了权限SQL,但可以再验证配置是否生效:
登录MySQL执行以下查询:

SELECT user, host, plugin FROM mysql.user WHERE user = 'auth0user';

需要确保:

  • 存在host为%的记录
  • plugin字段值为mysql_native_password
  • 密码与Node.js脚本中的password123完全一致

5. 优化Node.js脚本的错误输出

修改你的脚本,打印具体错误信息,方便后续排查:

const mysql = require('mysql');

const connection = mysql.createConnection({
    host: '3x.xx.xx.x6',
    port: 3306, // 建议使用数字类型而非字符串
    user: 'auth0user',
    password: 'password123',
    database: 'mydb'
});

connection.connect(function(err) {
    if (!err) {
        console.log('Connected successfully!');
    } else {
        console.error('Connection failed:', err.message);
        // 可选:打印完整错误栈
        // console.error(err.stack);
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:32:55