WorkBench通过SSH隧道连接私有子网EC2的MySQL报错解决
私有子网MySQL通过SSH隧道连接WorkBench失败排查
首先你遇到的报错翻译如下:
无法通过
ec2-user@<跳板VM公网IP>的SSH隧道,使用root用户连接到<MySQL所在EC2私有IP>地址的MySQL服务
按以下顺序逐点排查,绝大多数场景都能解决问题:
- 第一优先级查SSH密钥格式问题:MySQL WorkBench原生不支持
.ppk格式(这是Putty专用的密钥格式),你需要把.ppk转换成OpenSSH标准的.pem格式密钥,或者直接使用创建EC2时下载的原始.pem私钥文件配置到SSH Key File项。 - 先验证跳板机本身的连通性:本地打开终端/命令行,执行
ssh -i 你的私钥文件路径 ec2-user@跳板VM公网IP,先确认这步能正常登录跳板机。如果这步失败:- 检查跳板机安全组是否放开22端口对你本地公网IP的访问权限
- 确认跳板机的SSH用户名是否正确:如果跳板机是Ubuntu系统,默认SSH用户是
ubuntu不是ec2-user,Amazon Linux系列才默认用ec2-user - 检查私钥文件权限是否正确,Linux/macOS下需要执行
chmod 400 你的私钥文件给私钥加只读权限
- 跳板机能正常登录后,验证跳板机到MySQL实例的连通性:登录跳板机后执行
mysql -h MySQL实例私有IP -P 3306 -u root -p,输入root密码看能不能正常连上。如果这步失败:- 检查MySQL实例的安全组规则,确认3306端口对跳板机的私有IP放行(你配置的0.0.0.0/0放行规则如果存在优先级更高的拒绝规则也会连不上)
- 检查MySQL服务的监听配置:登录MySQL所在的Ubuntu虚拟机,编辑配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf,把bind-address项的值从默认的127.0.0.1改成0.0.0.0,保存后执行systemctl restart mysql重启服务生效 - 检查root用户的访问权限:MySQL默认root账号仅允许本地localhost登录,需要在MySQL实例本地登录MySQL后执行以下SQL授权:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你设置的root账号密码' WITH GRANT OPTION; FLUSH PRIVILEGES;
- 以上都验证通了之后再回WorkBench重连,注意检查配置项不要打错字符、多打空格,如果之前连接过跳板机出现过指纹变更,删除本地
~/.ssh/known_hosts文件中对应跳板机公网IP的记录后再重试。
内容的提问来源于stack exchange,提问作者Container-Man
相关产品推荐
相关产品推荐

