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

使用SSH隧道连接托管MySQL数据库时Workbench连接失败

解决MySQL SSH隧道连接"reading initial communication packet"错误

可能的原因及对应解决步骤

1. 确认SSH服务器允许TCP转发

  • 登录你的SSH服务器(user@homexxxxxxx.1and1-data.host),编辑/etc/ssh/sshd_config文件:
    • 确保AllowTcpForwarding设置为yes(部分服务商默认禁用该选项)
    • 确认GatewayPorts未被设置为no(本地转发场景下该配置影响较小,但需保证无冲突限制)
  • 修改后重启SSH服务:
    # Debian/Ubuntu系统
    sudo systemctl restart sshd
    # CentOS/RHEL系统
    sudo service sshd restart
    

2. 检查MySQL用户的访问权限

  • 托管的MySQL服务器(dbxxx.db.1and1.com)通常会限制IP访问,通过SSH隧道连接时,MySQL识别的是SSH服务器的IP,而非你本地IP。
  • 登录1and1的MySQL管理后台,确认用户dboxxxxxx/dbuser是否允许从SSH服务器的公网IP访问。
  • 临时测试可放宽权限(测试后建议恢复为指定IP):
    GRANT ALL PRIVILEGES ON 你的数据库名.* TO 'dboxxxxxx'@'%' IDENTIFIED BY '你的密码';
    FLUSH PRIVILEGES;
    

3. 验证端口转发状态

  • 使用Putty建立转发后,在本地执行命令检查端口占用:
    • Windows:netstat -ano | findstr :3309
    • Linux/macOS:lsof -i :3309
  • 若3309端口被其他程序占用,更换为未使用的端口(如3310),重新配置Putty转发规则和Workbench连接参数。

4. 排查本地安全软件拦截

  • 临时关闭Windows Defender防火墙、第三方杀毒软件,测试是否能正常连接。若恢复正常,需添加规则允许127.0.0.1:3309的入站/出站流量。

5. 测试基础连通性

  • 在SSH服务器上直接测试MySQL连接:
    mysql -h dbxxx.db.1and1.com -u dboxxxxxx -p
    
    若这一步失败,说明问题出在MySQL服务器或用户权限,与SSH隧道无关。
  • 本地测试端口转发有效性:执行telnet 127.0.0.1 3309(Windows需先开启Telnet功能),若连接被拒绝,说明端口转发未生效。

6. 优化MySQL Workbench配置(针对标准TCP/IP over SSH方式)

  • 确保配置项准确:
    • SSH Hostname:homexxxxxxx.1and1-data.host:22
    • SSH Username:user
    • MySQL Hostname:dbxxx.db.1and1.com
    • MySQL Server Port:3306
    • MySQL Username:dboxxxxxx
  • 取消勾选"Use SSH compression"(部分场景下压缩会导致连接异常)
  • 确认SSH登录的密码/密钥可正常访问服务器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:40:53