我正在尝试从本地计算机连接到托管在 AWS 上的 MySQL 数据库。数据库本身不可公开访问(因为它配置为拒绝外部连接),但可以从 EC2 实例访问,而 EC2 实例本身可从外部访问。我的意思是,我可以通过 SSH 进入 EC2 实例,并从该会话中使用 EC2 实例上的 MySQL 客户端连接到数据库。MySQL 数据库和 EC2 实例是同一 AWS 虚拟私有云的一部分。我组织中的其他人通过从本地计算机到 EC2 实例创建 SSH 隧道来访问数据库,然后使用 MySQL Workbench,这似乎可以满足这种情况。
我希望能够直接访问数据库,无论是从本地的 MySQL 客户端,还是通过 JDBC。这似乎涉及通过 EC2 实例进行路由(以某种方式)。这可能吗?如果我没有完全清楚,请原谅,我的网络技能已经到了极限 - 请问我是否可以澄清任何事情。我的操作系统是 Linux(NixOS)。
在此先表示感谢,活动结束后也表示感谢。
答案1
你已经知道问题的答案了。你需要使用 SSH 隧道。
不确定 MySQL 客户端是否具有内置的 SSH 隧道功能。如果没有,请按以下方式设置:
假设这些是您的 EC2 实例和 DB IP 地址:EC2:10.10.1.30 DB:10.20.2.40
- 在您的 EC2 实例上运行:
ssh -R 33060:10.20.2.40:3306 10.10.1.30
- 确保
GatewayPorts
设置yes
为/etc/ssh/sshd_config
(GatewayPorts no
) - 在本地计算机上,要访问数据库,请将 MySQL 客户端数据库主机名/IP 字段设置为 EC2 实例公有 IP 地址和端口 33060 (
ex: 123.45.67.89:33060
)