Мне не удается получить доступ к экземпляру MySQL RDS.
Я пытаюсь подключиться к экземпляру RDS из экземпляра EC2. И экземпляр RDS, и экземпляр EC2 содержатся в одном VPC, myVPC. Я подтвердил это, проверив, что VPC, указанный в экземпляре RDS, совпадает с экземпляром RC2.
Большинство вопросов по этой проблеме, которые я обнаружил, касались групп безопасности. Многие пользователи столкнулись с этой проблемой, и их проблема была решена путем обеспечения того, чтобы группа безопасности VPC, связанная с экземпляром RDS, была такой же, как и для их экземпляра EC2. В моем случае оба экземпляра находятся в одном VPC и используют одну и ту же группу безопасности. В этой группе безопасности у меня есть правило, которое разрешает весь входящий трафик через весь диапазон IP-адресов моего VPC (например, 172.35.0.0/16). В попытке заставить это работать вообще, я разрешил ВЕСЬ трафик через все порты со всех IP-адресов для этой группы безопасности. Это до сих пор не сработало.
Некоторое чтение документации предполагает, что следует убедиться, что ваши подсети связаны с той же таблицей маршрутизации, которая используется вашим VPC. Я сделал это, перейдя к таблице маршрутизации, связанной со всеми подсетями в myVPC с этой таблицей маршрутизации.
Я также пробовал с эластичным IP и без него. Я могу подключиться к своему экземпляру EC2 с эластичным IP-адресом.
Я понимаю, что этот вопрос задают довольно много. На данный момент я не встречал человека, решение которого решило бы мою проблему.
Отредактировано: добавляет дополнительные сведения о настройках безопасности. И экземпляр ec2, и RDS используют одну и ту же группу безопасности. Внутри этой группы безопасности есть строка, которая говорит что-то вроде
MYSQL TCP 3306 172.35.0.0/16
Мой диапазон CIDR
я добавил
MYSQL TCP 3306 172.35.0.1/32
Мой частный IP-адрес экземпляра ec2
Ничего из вышеперечисленного не помогло.
Какая работа DID была в моих настройках ACL сети? Я изменил строку с
1 MySQL(3306) TCP(6) 3306 172.35.0.1/32 ALLOW
к
1 ALL TRAFFIC ALL ALL 0.0.0.0/32 ALLOW
Итак, моя проблема решена, но теперь у меня есть другой вопрос. Как мне избежать открытия 3306 для всех входящих подключений. Я могу опубликовать это как новый вопрос со ссылкой здесь.
У меня самого была эта проблема пару недель назад. В моем случае я забыл разрешить исходящий трафик через порт 3306 для моего экземпляра EC2 в VPC CIDR. Попробуйте добавить исходящее правило в группу безопасности вашего экземпляра EC2, которое выглядит примерно так:
Type Protocol Port Range Destination
MYSQL TCP 3306 172.35.0.0/16
Вы уверены, что ваша БД находится внутри VPC с вашим экземпляром EC2? Предполагая, что создайте группу безопасности, которая разрешает входящий трафик 3306 из диапазона CIDR для вашего VPC.
Чтобы протестировать более привычным способом, вы можете создать временный экземпляр с MySQL, он должен работать так же, пока он находится в вашем VPC.
Убедитесь, что ваш RDS находится в группе подсетей, доступной с других компьютеров в вашем VPC, например, убедитесь, что вы можете выполнять маршрутизацию между подсетями, если вы находитесь в нескольких зонах доступности и т. Д.
Обновление: также попробуйте использовать IP-адрес VPC, а не внешнее DNS-имя для доступа к нему, ваш DNS может указывать на внешний сетевой адрес или иным образом давать сбой.
После долгой охоты за решением той же проблемы я хотел предложить то, для чего, похоже, работает. Изначально у меня были RDS и экземпляр EC2 с разными группами безопасности.
После обновления RDS для использования группы безопасности VPC я все еще не мог подключиться. Наконец, сработало, когда я добавил правило для входящего трафика для порта 3306 для диапазона CDIR на моем VPC, как ответил @TheFiddlerWins.
Группа безопасности VPC должна инкапсулировать это правило, уже настолько разочаровывающее, что я не могу точно сказать, почему это заставило его работать, но после этого оно действительно сработало.
У меня такая же проблема. Я использовал микро-экземпляры с бесплатным уровнем для тестирования. Если ваши RDS и EC2 находятся в разных зонах доступности, вам необходимо использовать общедоступный IP-адрес. Если они находятся в одной зоне или EC2 используется во многих зонах, вы можете использовать частный IP-адрес.