Почему я не могу подключиться к Amazon RDS после его настройки?


43

Итак, я только что создал учетную запись Amazon RDS. И я начал экземпляр базы данных.

The "endpoint" is:
abcw3n-prod.cbmbuiv8aakk.us-east-1.rds.amazonaws.com

Большой! Теперь я пытаюсь подключиться к нему из одного из моих других экземпляров EC2.

mysql -uUSER -pPASS -habcw3n-prod.cbmbuiv8aakk.us-east-1.rds.amazonaws.com

Но ничего не работает и просто зависает.

Я попытался пинговать это, и ничто не работает также. Ничего не произошло.

Нужно ли менять некоторые настройки?

Ответы:


45

По умолчанию RDS не разрешает подключение, которое не указано в группе безопасности (SG). Вы можете разрешить на основе адресации CIDR или номера учетной записи Amazon, что позволит любому EC2 под этой учетной записью получать к нему доступ.


27

Он «просто зависает», так как вы не настроили брандмауэр на прием соединений mySQL от вашего другого экземпляра, так как пакет отбрасывается на уровне брандмауэра, для решения этого вам необходимо:

  1. зайдите в консоль AWS
  2. Вкладка EC2
  3. Запишите группу безопасности вашего сервера MySQL (на данный момент называйте это SG-MYSQL)
  4. щелкните группы безопасности слева от консоли
  5. нажмите вашу группу в центре меню SG-MYSQL
  6. нажмите вкладку
  7. выберите mySQL из списка, добавьте данные вашего клиентского сервера и сохраните правило

ПРИМЕЧАНИЕ. Исходный IP-адрес сервера не будет вашим эластичным IP-адресом (в большинстве случаев в любом случае) у вас будет внутренний IP-адрес на устройстве (ifconfig в linux покажет вам это).


1
Я сделал это на моем сервере EC2. Я открыл все стандартные порты.
Алекс

1
У меня нет экземпляра EC2, и мой RDS не может подключиться к внешнему миру, пока я не сделаю это.
Умайр А.

1
Отличная точка для использования эластичного IP!
user1641443

1
Спасибо за это. Пошаговое руководство изменило все!
Мистер Т

1
Создана учетная запись по вине сервера, просто чтобы подтвердить это. СПАСИБО.
CaptainMarvel

7

Здесь много говорят о группах безопасности, но также проверяют:

  • Связанные подсети кажутся правильно настроенными?
  • Являются ли подсети частью группы маршрутизации, которая кажется правильно настроенной (указан шлюз Интернета и т. Д.?)
  • RDS говорит, что это публично доступно?
  • И, конечно же, проверьте RDS Security Group и EC2 Security Group
    • Не забывайте, что ваш фактический IP-адрес источника может быть внутренним IP-адресом (при внутреннем доступе через VPC) или внешним IP-адресом (который может быть IP-адресом маршрутизатора или IP-адресом экземпляра EC2, который отличается от его Load Balancer / Elastic IP) - для устранения неполадок вы можете попытаться разрешить доступ ко всем IP-адресам и портам.

(Моя группа маршрутизации была моей проблемой; при создании новой подсети я не стал добавлять ее в группу маршрутизации со шлюзом.)


Для пояснения: ВСЕ подсети, выбранные вами в группе подсетей RDS, должны иметь таблицы маршрутизации с указанным интернет-шлюзом. Моя проблема заключалась в том, что две из подсетей, которые я выбрал, были моими «частными» подсетями, в которых был указан шлюз NAT для исходящего трафика, а не интернет-шлюз, и RDS случайно выбрал сервер в одной из этих подсетей. Обратитесь к этой статье , если вы не слишком хорошо знакомы с маршрутизацией: medium.com/@mda590/aws-routing-101-67879d23014d
timetofly

На меня повлияла та же проблема, что и @timetofly. У меня была одноразовая работа, которую я решил запустить на ECS Fargate, для которой требовался NAT для загрузки файлов. Настройка NAT разорвала мое соединение с RDS с моего ноутбука. Когда работа закончилась, я обновил свои подсети, чтобы использовать только Интернет-шлюз, и я был в порядке.
vitale232

4

Исправлена.

Пришлось предоставить доступ к нему в группах безопасности под БД ...


6
Можете ли вы рассказать, что вы сделали для предоставления доступа?
Дэвид Цсонка

1
В моей базе данных есть группа безопасности с одним правилом. Разрешить доступ из любого места к порту 1433. Я не могу подключиться -_-
The Muffin Man

1

У меня была такая же проблема ;

  1. Группы безопасности> rds-launch-wizard (или любое имя, выбранное для SG db)
  2. выберите вкладку Входящие> изменить
  3. добавить новую роль
  4. MySQL
  5. Источник -> вставьте IP-адрес aws vm (например: 12.3.14.80/32)

работал на меня ...


1

В попытке полностью открыть систему безопасности для тестирования перед блокировкой доступа, и мой экземпляр базы данных, и мой экземпляр EC2 использовали одну и ту же группу безопасности, а входящий и исходящий порт 3306 были настроены для разрешения подключений из любого места. Проблема - мне удалось подключиться к Aurora из моего ноутбука, но, как ни странно, не из моего экземпляра EC2, как будто экземпляр EC2 не был Anywhere. Решение состояло в том, чтобы добавить еще одно входящее правило mysql / Aurora и указать тот же идентификатор группы безопасности в качестве источника для входящих подключений. У моей группы безопасности есть правило, которое ссылается на себя, и я могу подключиться либо из моего ноутбука, либо из моего экземпляра EC2.


-3

Правило входящего mysql должно быть как ниже

образ это проблема с группой безопасности.


3
Есть ли причина, по которой вы наталкиваетесь на пятилетний вопрос, чтобы ответить на него тем же ответом, который был там годами? Предоставить 0.0.0.0/0доступ к 3306тоже не очень хорошая идея.
ceejayoz

Я пытался показать пользователю, что они должны изменить и как они могут измениться. Вы знаете, что многие пользователи, подобные мне, не могут решить проблему, прочитав приведенный выше ответ. это может не помочь вам, но есть пользователи, которые ищут это. Вы дали отрицательный голос, так как это не поможет вам.
Нирмал Дхара

3
Мое отрицательное мнение связано с тем, что люди должны открывать MySQL для всего Интернета. Это опасный подход.
ceejayoz

я понял. я просто показываю место, где они могут редактировать группы безопасности, они могут выбрать из выпадающего списка все, что они хотят.
Нирмал Дхара
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.