Подтвердить что ты не робот

Подключение к экземпляру Amazon RDS через экземпляр EC2 с использованием MySQL Workbench

В AWS у меня есть VPC, настроенный с помощью Bastion Host. Хост-бастион - это единственный экземпляр EC2 с открытым адресом, который вы можете использовать SSH для любого другого сервера на VPC.

Я создал экземпляр RDS MySQL в VPC, и я хотел бы подключиться к нему с помощью workbench MySQL. Я выполнил следующие шаги: здесь, однако в разделе "Шаг 6: Настройка удаленной конфигурации SSH" он просит меня "Предоставить публичный DNS экземпляр Amazon EC2" (т.е. хозяин бастиона).

MySQL workbench затем проверяет определенные ресурсы MySQL на этом сервере. Однако, на мой взгляд, это неверно, поскольку я предоставил адрес хоста-бастиона, который не установлен MySQL. В результате последние две проверки для "Проверить местоположение команд старт/стоп" и "Проверить файл конфигурации MySQL" затем завершаются неудачей.

Затем я попытался использовать адрес конечной точки экземпляра RDS MySQL, но без успеха (как в частной подсети, так и не публично адресуемый).

Кажется, что у многих людей есть это и работает, но что я здесь делаю неправильно?

4b9b3361

Ответ 1

Я боролся с чем-то подобным в течение нескольких недель. Просто подумал об этом несколько минут назад.

  • В mysql workbench создайте новый экземпляр сервера.
  • Для адреса удаленного хоста введите адрес конечной точки (т.е. xxxxxx.us-east-1.rds.amazonaws.com)
  • Для метода подключения выберите "Стандартный TCP/IP через SSH"
  • Имя хоста SSH является общедоступным DNS вашего экземпляра EC2
  • В качестве имени пользователя я указал ec2-user (я считаю, что он зависит от типа экземпляра EC2), а затем указал загруженный файл ключа, соответствующий паре ключей, которую использовал экземпляр.
  • Имя_базы mysql является конечной точкой экземпляра RDS.
  • Имя пользователя - это имя пользователя для экземпляра RDS (т.е. ebroot)

Используя это, я смог подключиться. Тем не менее, я не использовал VPC в своей настройке. Надеюсь это поможет. Удачи!

Ответ 2

Поскольку вы используете VPC, так оно должно быть настроено для того, чтобы принимать соединения только из вашей подсети:

  • выберите группу безопасности VPC, используемую вашим экземпляром db
  • добавить новое правило, разрешающее всем ips из вашей частной подсети на порт 3306

    ex: Правило INBOUND 3306 (MYSQL) 172.33.11.0/24

  • используйте mysql workbench tcp/ssh, и он будет работать (следуйте AndrewSmiley ответ).

Ответ 3

Я рекомендую использовать SSH-туннелирование:

  • Создать сеанс шпатлевки на хосте bastion
  • В разделе Connection → SSH → Tunnels укажите порт Source: 3306, Destination: yourRDSendpointname: 3306
  • Не забудьте нажать добавить!
  • Подключитесь к хосту bastion с этими настройками
  • Добавьте новое соединение в Workbench MySQL и укажите его на ваш локальный порт 3306 (если вы не используете ничего на 3306 на локальном клиентском компьютере)
  • Введите свое имя пользователя и пароль для своего экземпляра RDS

Ответ 4

Это то, что решило проблему для меня. На панели управления RDS посмотрите на группу безопасности для вашего экземпляра. Нажмите на это, и он перенесет вас на страницу группы безопасности.

Хотя он сказал бы "Весь трафик" для редактирования входящих и исходящих кликов, и убедитесь, что источник говорит "Мой IP". Я бы не рекомендовал использовать все IP-адреса, так как это откроет его любому из интернета. Если у вас нет статического IP-адреса, убедитесь, что вы обновили это поле после прекращения работы соединения.

После этого я смог подключиться к экземплярам AWS RDS T2.

Ответ 5

Если вы действительно хотите использовать VPC-соединение AWS и не разрешать публичным IP-адресам, выполните следующие действия.

Если у вас есть одна группа безопасности, которой назначены как ваши EC2, так и RDS, затем добавьте входящее правило для mysql 3306 на TCP, но в исходном поле не помещаются IP или подсеть, а фактический идентификатор группы безопасности. т.е. sg-9829f3d2.

У меня лично есть две группы безопасности на VPC.

Первая группа безопасности 1 используется экземпляром EC2 и разрешает только порты, необходимые для EC2, то есть 80 и 22.

Во-вторых, группа безопасности 2 используется только экземпляром RDS и имеет одно правило для разрешения mysql (3302), а в поле источника установлено id группы безопасности 1.

Все Mysql workbench SSH-туннелирование также работает с двумя группами безопасности.

Ответ 6

Вы можете создать туннель SSH на своем хосте Bastion (экземпляр EC2) для перенаправления портов с вашего локального компьютера на удаленный экземпляр RDS.

на mac/linux это команда (для окон следуйте инструкциям в ссылке ниже):

ssh -L 3306:myinstance.123456789012.us-east-1.rds.amazonaws.com:3306  your_c2_ip

то вы можете подключиться к рабочему месту, используя следующие настройки:

  • метод подключения: стандартный TCP

  • имя хоста: localhost

  • порт 3306

Эта статья объясняет это методом более подробно; https://userify.com/blog/howto-connect-mysql-ec2-ssh-tunnel-rds/