Warum kann ich nach dem Einrichten keine Verbindung zu Amazon RDS herstellen?

43

Also habe ich gerade das Amazon RDS-Konto erstellt. Und ich habe eine Instanz der Datenbank gestartet.

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

Toll! Jetzt versuche ich, von einer meiner anderen EC2-Instanzen aus eine Verbindung herzustellen.

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

Aber nichts funktioniert und es hängt nur.

Ich habe versucht, es zu pingen, und es funktioniert auch nichts. Nichts passiert.

Muss ich einige Einstellungen ändern?

Alex
quelle

Antworten:

45

Standardmäßig lässt RDS keine Verbindungen zu, die nicht in der Sicherheitsgruppe (SG) angegeben sind. Sie können basierend auf der CIDR-Adresse oder nach der Amazon-Kontonummer zulassen, dass jeder EC2 unter diesem Konto darauf zugreifen kann.

Jeremy Bouse
quelle
27

Es hängt "nur", da Sie die Firewall nicht so konfiguriert haben, dass sie mySQL-Verbindungen von Ihrer anderen Instanz akzeptiert. Daher wird das Paket auf Firewall-Ebene verworfen. Um dies zu beheben, müssen Sie:

  1. Gehen Sie in Ihre AWS-Konsole
  2. Registerkarte EC2
  3. Notieren Sie sich die Sicherheitsgruppe Ihres mySQL-Servers (nennen Sie diese SG-MYSQL jetzt)
  4. Klicken Sie links in der Konsole auf Sicherheitsgruppen
  5. Klicken Sie im mittleren Menü SG-MYSQL auf Ihre Gruppe
  6. Klicken Sie auf die Registerkarte Eingehend
  7. Wählen Sie mySQL aus der Liste aus, fügen Sie die Details Ihres Client-Servers hinzu und speichern Sie die Regel

HINWEIS: Die Quell-IP für den Server ist nicht Ihre elastische IP (in den meisten Fällen sowieso). Sie haben eine interne IP auf dem Gerät (ifconfig unter Linux zeigt dies an).

Oneiroi
quelle
1
Ich habe das auf meinem EC2-Server gemacht. Ich habe alle Standardports geöffnet.
Alex
1
Ich habe keine EC2-Instanz und mein RDS konnte erst dann eine Verbindung zur Außenwelt herstellen.
Umair A.
1
Hervorragender Punkt, um elastische IP zu verwenden!
user1641443
1
Danke dafür. Die Komplettlösung hat den Unterschied gemacht!
Mr T
1
Erstellte ein Konto bei einem Serverfehler, um dies zu verbessern. DANKESCHÖN.
CaptainMarvel
7

Hier wird viel über Sicherheitsgruppen geredet, aber auch:

  • Scheinen die zugehörigen Subnetze richtig konfiguriert zu sein?
  • Sind die Subnetze Teil einer Routinggruppe, die ordnungsgemäß konfiguriert zu sein scheint (Internet-Gateway angegeben usw.)?
  • Sagt das RDS, dass es öffentlich zugänglich ist?
  • Und natürlich überprüfen Sie die RDS-Sicherheitsgruppe und die EC2-Sicherheitsgruppe
    • Vergessen Sie nicht, dass Ihre tatsächliche Quell-IP eine interne IP (bei internem Zugriff über eine VPC) oder eine externe IP (bei der es sich möglicherweise um die IP eines Routers oder um die Instanz-IP einer EC2-Instanz handelt, die sich von ihrer Load Balancer / Elastic-IP unterscheidet) sein kann. - Zur Fehlerbehebung können Sie versuchen, den Zugriff auf alle IPs und Ports zuzulassen.

(Die Routinggruppe war mein Problem. Beim Erstellen eines neuen Subnetzes habe ich es versäumt, es einer Routinggruppe mit einem Gateway hinzuzufügen.)

Willbradley
quelle
Zur Verdeutlichung: ALLE Subnetze, die Sie in der RDS-Subnetzgruppe auswählen, sollten über Routing-Tabellen verfügen, für die das Internet-Gateway angegeben ist. Mein Problem war, dass zwei der Subnetze, die ich ausgewählt hatte, meine "privaten" Subnetze waren, die ein NAT-Gateway für ausgehenden Datenverkehr anstelle des Internet-Gateways hatten, und RDS zufällig einen Server in einem dieser Subnetze auswählte. Lesen Sie in diesem Artikel nach, wenn Sie mit Routing nicht vertraut sind: medium.com/@mda590/aws-routing-101-67879d23014d
Flugplan
Ich war von demselben Problem betroffen wie @timetofly. Ich hatte einen einmaligen Auftrag, den ich auf ECS Fargate ausführen wollte, für den ein NAT zum Herunterladen von Dateien erforderlich war. Durch das Einrichten des NAT wurde meine Verbindung zu RDS von meinem Laptop getrennt. Nach Abschluss des Auftrags habe ich meine Subnetze so aktualisiert, dass nur das Internet-Gateway verwendet wird.
Vitale232
4

Fest.

Musste Zugriff darauf in den Sicherheitsgruppen unter der DB gewähren ...

Alex
quelle
6
Können Sie näher erläutern, was Sie getan haben, um Zugriff zu gewähren?
David Csonka
1
Meine Datenbank hat eine Sicherheitsgruppe mit einer Regel. Erlaube den Zugriff von ÜBERALL auf Port 1433. Ich kann keine Verbindung herstellen -_-
The Muffin Man
1

Ich hatte das gleiche Problem.

  1. Sicherheitsgruppen> rds-launch-wizard (oder ein beliebiger Name, der für die Datenbank-SG ausgewählt wurde)
  2. Wählen Sie die Registerkarte Eingehend> Bearbeiten
  3. neue rolle hinzufügen
  4. MySQL
  5. Quelle -> füge die aws vm ip ein (zum Beispiel: 12.3.14.80/32)

arbeitete für mich ...

lauter Stil
quelle
1

Bei dem Versuch, die Sicherheit vollständig zu Testzwecken zu öffnen, bevor der Zugriff gesperrt wird, verwendeten sowohl meine Datenbankinstanz als auch meine EC2-Instanz dieselbe Sicherheitsgruppe, und sowohl der eingehende als auch der ausgehende Port 3306 wurden so konfiguriert, dass Verbindungen von überall zugelassen werden. Das Problem - Ich konnte von meinem Notebook aus eine Verbindung zu Aurora herstellen, aber seltsamerweise nicht von meiner EC2-Instanz aus, als ob die EC2-Instanz nicht Anywhere wäre. Die Lösung bestand darin, eine weitere eingehende mysql / Aurora-Regel hinzuzufügen und dieselbe Sicherheitsgruppen-ID als Quelle für eingehende Verbindungen anzugeben . Meine Sicherheitsgruppe hat eine Regel, die sich auf sich selbst bezieht, und ich kann eine Verbindung von meinem Notebook oder von meiner EC2-Instanz aus herstellen.

John Dimm
quelle
-3

Die eingehende MySQL-Regel sollte wie folgt aussehen

Bild Dies ist das Problem mit der Sicherheitsgruppe.

Nirmal Dhara
quelle
3
Gibt es einen Grund, warum Sie eine fünf Jahre alte Frage mit der gleichen Antwort beantworten, die es schon seit Jahren gibt? Geben 0.0.0.0/0Zugang zu 3306ist keine gute Idee, auch nicht .
Ceejayoz
Ich habe versucht, den Benutzern zu zeigen, was sie ändern sollen und wie sie sich ändern können. Sie wissen, dass es viele Benutzer gibt, die wie ich das Problem nicht durch Lesen der obigen Ans lösen können. Vielleicht hilft es Ihnen nicht, aber es gibt Benutzer, die danach suchen. Sie haben die Gegenstimme abgegeben, da sie Ihnen nicht hilft.
Nirmal Dhara
3
Mein Downvote ist, dass Leute MySQL für das gesamte Internet öffnen sollten. Es ist ein gefährlicher Ansatz.
Ceejayoz
Ich hab es geschafft. Ich zeige nur die Stelle, an der sie die Sicherheitsgruppen bearbeiten können. Sie können aus der Dropdown-Liste auswählen, was immer sie wollen.
Nirmal Dhara