it-swarm.com.de

Herstellen einer Verbindung zur Amazon RDS-Instanz über die EC2-Instanz mit MySQL Workbench

In AWS habe ich eine VPC mit einem Bastion-Host eingerichtet. Der Bastion Host ist eine einzelne EC2-Instanz mit einer öffentlichen Adresse, über die Sie einen SSH-Zugriff auf einen beliebigen anderen Server in der VPC haben.

Ich habe eine RDS-MySQL-Instanz in der VPC erstellt, und ich möchte mit der MySQL-Workbench eine Verbindung herstellen. Ich habe die detaillierten Schritte here befolgt, aber in "Schritt 6: Einrichten der Remote-SSH-Konfiguration" werden Sie aufgefordert, "den öffentlichen DNS der Amazon EC2-Instanz bereitzustellen" (d. H. Den Bastion-Host).

Die MySQL-Workbench prüft dann, ob bestimmte MySQL-Ressourcen auf diesem Server vorhanden sind. Dies ist jedoch meiner Meinung nach nicht korrekt, da ich die Adresse des Bastion Host angegeben habe, auf der MySQL nicht installiert ist. Daher schlagen die letzten beiden Prüfungen nach "Position der Start-/Stoppbefehle prüfen" und "MySQL-Konfigurationsdatei prüfen" fehl.

Ich habe dann versucht, die Endpunktadresse der MySQL-Instanz von RDS zu verwenden, jedoch ohne Erfolg (da es sich im privaten Subnetz befindet, also nicht öffentlich ansprechbar ist).

Es scheint, als hätten viele Leute dies am Laufen, aber was mache ich hier falsch?

24
iamyojimbo

Ich habe seit Wochen mit etwas Ähnlichem zu kämpfen. Ich habe es gerade vor ein paar Minuten herausgefunden. 

  1. Erstellen Sie in der mysql workbench eine neue Serverinstanz.
  2. Geben Sie für die entfernte Hostadresse Ihre Endpunktadresse ein (d. H. Xxxxxx.us-east-1.rds.amazonaws.com).
  3. Wählen Sie für die Verbindungsmethode "Standard-TCP/IP über SSH" aus.
  4. Der SSH-Hostname ist der öffentliche DNS Ihrer EC2-Instanz
  5. Ich habe ec2-user (ich glaube es variiert je nach EC2-Instanztyp) als Benutzernamen angegeben und dann die heruntergeladene Schlüsseldatei angegeben, die dem von der Instanz verwendeten Schlüsselpaar entspricht. 
  6. Der MySQL-Hostname ist der Endpunkt der RDS-Instanz. 
  7. Der Benutzername ist der Benutzername für die RDS-Instanz (d. H. Ebroot).

Damit konnte ich mich verbinden. Ich habe jedoch VPC in meinem Setup nicht verwendet. Hoffe das hilft. Viel Glück!

33
AndrewSmiley

Da Sie eine VPC verwenden, sollte So konfiguriert werden, dass nur Verbindungen von Ihrem Subnetz akzeptiert werden:

  1. wählen Sie die VPC-Sicherheitsgruppe aus, die von Ihrer Datenbankinstanz verwendet wird
  2. fügen Sie eine neue Regel hinzu, um alle IPS aus Ihrem privaten Subnetz auf Port 3306 zuzulassen

    beispiel: Regel INBOUND 3306 (MYSQL) 172.33.11.0/24

  3. benutze mysql workbench tcp/ssh und es wird funktionieren (folge AndrewSmiley answer).

11
john

Ich empfehle SSH-Tunneling:

  1. Erstellen Sie eine PuTTY-Sitzung für den Bastion-Host
  2. Geben Sie unter Verbindung -> SSH -> Tunnel den Quellport an: 3306, Destination: yourRDSendpointname: 3306
  3. Vergiss nicht auf Hinzufügen zu klicken!
  4. Verbinden Sie sich mit diesen Einstellungen mit dem Bastion Host
  5. Fügen Sie eine neue Verbindung in der MySQL-Workbench hinzu und verweisen Sie sie auf Ihren localhost-Port 3306 (vorausgesetzt, Sie führen auf 3306 auf Ihrem lokalen Client-Computer nichts aus).
  6. Geben Sie Ihren Benutzernamen und Ihr Kennwort für Ihre RDS-Instanz ein
5
user3067703

Dies ist für die UBUNTU Mysql-Workbench

Sie müssen der Sicherheitsgruppe, die mit dem RDS verknüpft ist, eine eingehende Regel hinzufügen, um Anforderungen an Port 3306 von der Bastion/Jump/Any-Instanz (machine) ..__ zu akzeptieren. 

Bestätigen Sie auf Ihrem machine, ob Sie zuerst eine Verbindung mit dem RDS herstellen können oder nicht, bevor Sie versuchen, den SSH-Tunnel über die MYSQL-Workbench einzurichten. 

So testen Sie den Konnektivitätslauf: 

mysql -u{username} -p{password} -h ***-db-***.cmmaberpdqoc.***.rds.amazonaws.com -P 3306

Ersetzen Sie {Benutzername}, {Kennwort} und den Host durch Ihre Anmeldeinformationen.

Folgen Sie dem Bild und Sie sollten eine Verbindung herstellen können.

 Pictorial representation of the details to be entered.

1
CodeShadow

Sie können einen SSH-Tunnel in Ihrem Bastion-Host (EC2-Instanz) erstellen, um Ports von Ihrem lokalen Computer an die Remote-RDS-Instanz weiterzuleiten.

auf Mac/Linux ist dies der Befehl (für Windows folgen Sie den Anweisungen im Link unten):

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

dann können Sie mit den folgenden Einstellungen eine Verbindung zur Workbench herstellen:

  • verbindungsmethode: Standard-TCP

  • hostname: localhost

  • port 3306

In diesem Beitrag wird die Methode ausführlicher erläutert: https://userify.com/blog/howto-connect-mysql-ec2-ssh-tunnel-rds/

1
Yasir

Dies hat das Problem für mich gelöst. Sehen Sie sich im RDS-Dashboard die Sicherheitsgruppe für Ihre Instanz an. Klicken Sie auf diese Schaltfläche, um zur Sicherheitsgruppenseite zu gelangen. 

Es würde zwar "Alle Zugriffe" sowohl für eingehende als auch für ausgehende Daten anzeigen, klicken Sie auf "Bearbeiten" und stellen Sie sicher, dass die Quelle "Meine IP" angibt. Ich würde nicht empfehlen, alle IPs zu verwenden, da dies für alle im Internet zugänglich wäre. Wenn Sie keine statische IP-Adresse haben, stellen Sie sicher, dass Sie dieses Feld aktualisieren, sobald die Verbindung nicht mehr funktioniert.

Danach konnte ich mich mit den AWS RDS T2-Instanzen verbinden.

0
Basil Abbas

Wenn Sie wirklich die VPC-Konnektivität von AWS verwenden und keine öffentlichen IP-Adressen zulassen möchten, gehen Sie wie folgt vor.

Wenn Sie über eine Sicherheitsgruppe verfügen, der sowohl EC2 als auch RDS zugewiesen werden, um eine eingehende Regel für mysql 3306 unter TCP hinzuzufügen, aber im Quellfeld nicht IP oder Subnetz, sondern die tatsächliche Sicherheitsgruppen-ID angeben. dh sg-9829f3d2.

Ich persönlich habe zwei Sicherheitsgruppen für VPC.

Die erste Sicherheitsgruppe 1 wird von der EC2-Instanz verwendet und lässt nur die für die EC2 erforderlichen Ports (80 und 22) zu.

Die zweite Sicherheitsgruppe 2 wird nur von der/den RDS-Instanz (en) verwendet und hat eine Regel zum Zulassen von mysql (3302). Das Quellfeld ist auf die ID der Sicherheitsgruppe 1 gesetzt.

Das gesamte SSH-Tunneln der Mysql-Workbench funktioniert auch mit den beiden Sicherheitsgruppen.

0
Skin