我有以下设置:一个在 2 个私有子网的子网组中运行的 RDS 实例;一个在公共子网中运行的 EC2 实例。因此,我想通过我的 EC2 实例连接到我的 RDS 实例。
我还希望能够从 shell 进行连接。因此我在本地计算机上运行以下命令:
ssh -L 3305:mydb.myrdsinstance.eu-west-1.rds.amazonaws.com:3306 ec2-user@myec2instance
因此我登录了我的 ec2 实例并尝试使用以下命令访问数据库:
mysql -h localhost -u mydbuser -p
输入正确的主密码,得到:
错误 1045(28000):拒绝用户“mydbuser”@“localhost”访问(使用密码:是)
我也尝试从我的 ec2 实例建立隧道(通过从中运行 SSH 命令),这也会创建连接,但我无法像上面一样访问数据库。
我尝试使用 -N 选项运行 ssh 命令,这会出现闪烁的光标,但什么也没有发生。
我的本地计算机上的防火墙已被禁用,所有流量都允许通过 EC2 和 RDS 实例。
我还尝试与 Workbench 建立连接,但出现了奇怪的情况。当我连接并输入主密码时,系统显示“无法连接到 127.0.0.1 (111) 上的 MySQL 服务器”。但如果我选中“将密码保存在钥匙串中”,下次连接时就会正常,不会发生任何变化。
我该如何修复这个问题并通过带有 shell 的 SSH 隧道连接到 RDS 实例?
答案1
ssh -L 3305:mydb.myrdsinstance.eu-west-1.rds.amazonaws.com:3306 ec2-user@myec2instance
您需要转发端口3306
而不是端口3305
。