根本原因是迁移向导启动时反向校验目标库连通性,而非源库连接问题;需检查目标MySQL的bind-address是否为0.0.0.0、防火墙/安全组是否放行3306端口、SSH隧道配置是否误启用,并可通过connections.xml调大connection_timeout参数临时缓解。
Connection timeout 的根本原因这不是网络不通的简单问题,而是迁移向导在启动阶段会尝试用源库的连接参数(尤其是 host、port、user)反向连接目标库或自身所在机器,用于校验 SSH 隧道、SSL 配置或元数据服务端口。如果目标 MySQL 实例监听的是 127.0.0.1 而非 0.0.0.0,或者防火墙/云安全组没放行目标端口(默认 3306),就会卡在“Testing connection…”并最终超时。
关键点:这个超时和你能否用 Workbench 正常连上源库完全无关——它测的是迁移流程内部的连通性链路。
bind-address 不是 127.0.0.1(否则只接受本地回环连接);应设为 0.0.0.0 或具体可访问的内网 IP sudo ss -tlnp | grep :3306,确认监听地址不是 127.0.0.1:3306 3306 -p 3306:3306 并确认容器内 bind-address 配置正确 迁移向导默认勾选 Use SSH tunnel 时,即使你没填 SSH 参数,它仍会尝试建立隧道并等待响应,极易触发超时。
Manage Connections… SSH 标签页中: Use SSH tunnel
Connection Method 是 Standard TCP/IP
MySQL Hostname 填 127.0.0.1(因为 SSH 隧道会在本地映射)Workbench 没有图形界面选项调这个值,但可通过修改配置文件生效:
~/.mysql/workbench/connections.xml(macOS/Linux)或 %APPDATA%MySQLWorkbenchconnections.xml(Windows) <parameter name="connection_timeout">60</parameter>(单位秒,建议从 30 改成 60 或 120) 注意:该参数仅影响部分连接阶段,不能解决底层不可达问题,只是给慢链路多一点时间。
迁移向导的连接校验逻辑藏得深,很多用户反复确认“我能连上”,却没意识到它其实在用另一套路径探测——最稳妥的做法永远是先用 mysql -h 目标IP -P 3306 -u 用户 -p 在 Workbench 所在机器上手动连一次目标库。