Dlaczego nie mogę połączyć się z usługą Amazon RDS po skonfigurowaniu?


43

Właśnie utworzyłem konto Amazon RDS. I zacząłem instancję bazy danych.

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

Wspaniały! Teraz staram się połączyć z jednym z moich innych wystąpień EC2.

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

Ale nic nie działa i po prostu się zawiesza.

Próbowałem pingować i nic też nie działa. Nic się nie dzieje.

Czy muszę zmienić niektóre ustawienia?

Odpowiedzi:


45

Domyślnie RDS nie zezwala na żadne połączenia, które nie są określone w grupie zabezpieczeń (SG). Możesz zezwolić na podstawie adresu CIDR lub numeru konta Amazon, co umożliwiłoby dostęp do niego każdemu EC2 na tym koncie.


27

Jest „po prostu zawieszony”, ponieważ nie skonfigurowano zapory ogniowej do akceptowania połączeń mySQL z drugiej instancji, ponieważ pakiet jest upuszczany na poziomie zapory ogniowej, aby rozwiązać ten problem, należy:

  1. przejdź do konsoli AWS
  2. Karta EC2
  3. Zanotuj grupę zabezpieczeń swojego serwera mySQL (na razie nazywaj to SG-MYSQL)
  4. kliknij grupy zabezpieczeń po lewej stronie konsoli
  5. kliknij swoją grupę w środkowym menu SG-MYSQL
  6. kliknij kartę przychodzącą
  7. wybierz mySQL z listy, dodaj szczegóły serwera klienta i zapisz regułę

UWAGA źródłowy adres IP serwera nie będzie twoim elastycznym adresem IP (w większości przypadków i tak) będziesz mieć wewnętrzny adres IP na urządzeniu (pokaże to ifconfig na Linuksie).


1
Zrobiłem to na moim serwerze EC2. Otworzyłem wszystkie standardowe porty.
Alex

1
Nie mam instancji EC2 i mój RDS nie mógł połączyć się ze światem zewnętrznym, dopóki tego nie zrobię.
Umair A.

1
doskonały punkt do zastosowania elastycznego IP!
user1641443

1
Dzięki za to. Przewodnik zrobił różnicę!
Pan T

1
Utworzono konto z winy serwera, aby to zagłosować. DZIĘKUJĘ CI.
CaptainMarvel,

7

Dużo tu mówimy o grupach bezpieczeństwa, ale sprawdź także:

  • Czy powiązane podsieci wydają się poprawnie skonfigurowane?
  • Czy podsieci są częścią grupy routingu, która wydaje się poprawnie skonfigurowana (określono bramę internetową itp.)?
  • Czy RDS twierdzi, że jest publicznie dostępny?
  • I oczywiście sprawdź RDS Security Group i EC2 Security Group
    • Nie zapominaj, że rzeczywisty źródłowy adres IP może być wewnętrznym adresem IP (w przypadku uzyskiwania dostępu wewnętrznego przez VPC) lub zewnętrznym adresem IP (którym może być adres IP routera lub adres IP wystąpienia instancji EC2, który różni się od jego modułu równoważenia obciążenia / elastycznego adresu IP) - w celu rozwiązania problemu możesz spróbować zezwolić na dostęp do wszystkich adresów IP i portów.

(Grupa routingu była moim problemem; tworząc nową podsieć zaniedbałem dodawanie jej do grupy routingu z bramą).


W celu wyjaśnienia: WSZYSTKIE podsieci wybrane w grupie podsieci RDS powinny mieć tabele routingu z określoną bramą internetową. Mój problem polegał na tym, że dwie podsieci, które wybrałem, były moimi „prywatnymi” podsieciami, które miały bramę NAT określoną dla ruchu wychodzącego, a nie bramę internetową, a RDS wybrał serwer w jednej z tych podsieci. Zapoznaj się z tym artykułem, jeśli nie jesteś zbyt zaznajomiony z routingiem: medium.com/@mda590/aws-routing-101-67879d23014d
harmonogram

Byłem dotknięty tym samym problemem co @timetofly. Miałem jednorazową pracę, którą postanowiłem uruchomić na ECS Fargate, która wymagała NAT do pobierania plików. Skonfigurowanie translacji NAT zepsuło moje połączenie z RDS z mojego laptopa. Po zakończeniu zadania zaktualizowałem moje podsieci, aby używały tylko Internet Gateway, i byłem gotowy do pracy.
vitale232

4

Naprawiony.

Musiałem udzielić dostępu do tego w grupach zabezpieczeń w DB ...


6
Czy możesz wyjaśnić, co zrobiłeś, aby udzielić dostępu?
David Csonka

1
Moja baza danych ma grupę zabezpieczeń z jedną regułą. Zezwalaj na dostęp z KAŻDEGO miejsca do portu 1433. Nie mogę się połączyć -_-
The Muffin Man

1

Miałem ten sam problem;

  1. Grupy zabezpieczeń> rds-launch-wizard (lub dowolna nazwa wybrana dla db SG)
  2. wybierz kartę Przychodzące> edytuj
  3. dodaj nową rolę
  4. MySQL
  5. Źródło -> wstaw aws vm ip (na przykład: 12.3.14.80/32)

pracował dla mnie ...


1

Próbując całkowicie otworzyć zabezpieczenia w celu przetestowania przed zablokowaniem dostępu, zarówno moja instancja bazy danych, jak i moja instancja EC2 korzystały z tej samej grupy zabezpieczeń, a zarówno port przychodzący, jak i wychodzący 3306 zostały skonfigurowane tak, aby zezwalały na połączenia z dowolnego miejsca. Problem - udało mi się połączyć z Aurorą z mojego notebooka, ale co dziwne, nie z mojej instancji EC2, tak jakby instancja EC2 nie była nigdzie. Rozwiązaniem było dodanie kolejnej reguły przychodzącej mysql / Aurora i określenie tego samego identyfikatora grupy zabezpieczeń jako źródła połączeń przychodzących. Moja grupa zabezpieczeń ma regułę, która odnosi się do samej siebie, i mogę się połączyć z mojego notebooka lub instancji EC2.


-3

Reguła ruchu przychodzącego mysql powinna wyglądać jak poniżej

wizerunek taki jest problem z grupą bezpieczeństwa.


3
Czy istnieje powód, dla którego uderzasz pięcioletnie pytanie, aby odpowiedzieć na to samo pytanie, które było tam od lat? Dając 0.0.0.0/0dostęp do 3306nie jest to świetny pomysł, albo.
ceejayoz

próbowałem pokazać użytkownikowi, co powinien zmienić i jak mogą zmienić, wiesz, że istnieje wielu użytkowników takich jak ja, którzy nie mogą rozwiązać problemu, czytając powyższe odpowiedzi. może ci to nie pomóc, ale użytkownik tego szuka. oddałeś głos, ponieważ to ci nie pomaga.
Nirmal Dhara

3
Moje zdanie pochodzi od powiedzenia, że ​​ludzie powinni otwierać MySQL na cały internet. To niebezpieczne podejście.
ceejayoz

mam to. Po prostu pokazuję miejsce, w którym mogą edytować grupy zabezpieczeń, mogą wybierać z rozwijanego menu, co tylko chcą.
Nirmal Dhara,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.