如何通过SSH安全连接MySQL Workbench到AWS EC2上的Django项目
通过SSH连接EC2实例上MySQL数据库的故障排查与解决方法
一、修复SSH密钥文件权限问题
Ubuntu系统对SSH密钥文件权限要求严格,权限过宽会直接拒绝连接:
- Linux/macOS本地终端执行:
chmod 600 /path/to/your-key-file.pem - Windows用户:右键密钥文件→属性→安全→高级,删除所有非当前用户的权限条目,仅保留自身的完全控制权限。
二、确认MySQL用户的本地访问权限
SSH连接时,客户端相当于通过EC2本地的127.0.0.1访问数据库,必须确保你的MySQL用户拥有本地访问权限:
- 登录EC2实例的MySQL:
mysql -u root -p - 查看现有用户的访问范围:
SELECT user, host FROM mysql.user; - 若没有
username@localhost或username@127.0.0.1的条目,执行以下命令添加权限:CREATE USER 'username'@'localhost' IDENTIFIED BY 'your-password'; GRANT ALL PRIVILEGES ON db_schema_name.* TO 'username'@'localhost'; FLUSH PRIVILEGES;
三、修正MySQL Workbench的SSH连接配置
确保以下配置项完全正确:
- SSH主机名:EC2实例的公网IPv4地址(如
13.234.56.78) - SSH用户名:Ubuntu官方镜像默认是
ubuntu,自定义镜像填对应用户名 - SSH密钥文件:选择本地的.pem文件,确认路径无错误
- MySQL主机名:必须填
127.0.0.1(SSH隧道会转发到EC2本地的MySQL服务) - MySQL端口:
3306 - MySQL用户名:你创建的数据库用户
username - MySQL密码:对应用户的密码
四、检查EC2安全组的SSH入站规则
确保安全组允许你的本地IP访问22端口:
- 进入AWS控制台→EC2→实例→选中目标实例→安全组
- 编辑入站规则,添加一条:
- 类型:SSH
- 协议:TCP
- 端口范围:22
- 源:你的本地IP(格式如
192.168.1.1/32),测试阶段可临时用0.0.0.0/0,测试完成后务必改回本地IP
五、恢复MySQL的安全绑定设置(可选但推荐)
使用SSH隧道后,无需让MySQL监听公网,改回本地绑定更安全:
- 编辑MySQL配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf - 修改以下两项:
bind-address = 127.0.0.1 mysqlx-bind-address = 127.0.0.1 - 重启MySQL服务:
sudo systemctl restart mysql
内容的提问来源于stack exchange,提问作者JSNew134
相关产品推荐
相关产品推荐

