web-dev-qa-db-ja.com

MySQL Workbenchを使用してEC2インスタンス経由でAmazon RDSインスタンスに接続する

AWSでは、Bastion HostでVPCをセットアップしています。要塞ホストは、VPC上の他のサーバーにSSHで接続できるパブリックアドレストラフを持つ単一のEC2インスタンスです。

VPC内でRDS MySQLインスタンスを作成しました。MySQLワークベンチを使用して接続したいと思います。詳細な手順に従いました here ですが、「ステップ6:リモートSSH設定のセットアップ」で、「Amazon EC2インスタンスのパブリックDNSを提供する」(要塞ホスト)を求められます。

MySQLワークベンチは、そのサーバー上の特定のMySQLリソースをチェックします。ただし、MySQLがインストールされていない要塞ホストのアドレスを提供したため、これは私の意見では正しくありません。その結果、「開始/停止コマンドの場所を確認する」と「MySQL構成ファイルを確認する」ための最後の2つのチェックは失敗します。

次に、RDS MySQLインスタンスのエンドポイントアドレスを使用しようとしましたが、成功しませんでした(プライベートサブネットにあるため、パブリックにアドレス指定できません)。

多くの人がこれを実行しているようですが、ここで何が間違っていますか?

25
iamyojimbo

私は今何週間も似たようなことに苦労しています。数分前にそれを理解しました。

  1. Mysqlワークベンチで、新しいサーバーインスタンスを作成します。
  2. リモートホストアドレスには、エンドポイントアドレスを入力します(例:xxxxxx.us-east-1.rds.amazonaws.com)
  3. 接続方法として、「SSH経由の標準TCP/IP」を選択します
  4. SSHホスト名はEC2インスタンスのパブリックDNSです
  5. ユーザー名としてec2-user(EC2インスタンスのタイプによって異なると思います)を指定し、インスタンスが使用していたキーペアに対応するダウンロードされたキーファイルを指定しました。
  6. Mysqlホスト名は、RDSインスタンスのエンドポイントです。
  7. ユーザー名は、RDSインスタンスのユーザー名です(つまり、ebroot)

それを使用して接続できました。ただし、セットアップでVPCを使用しませんでした。お役に立てれば。幸運を!

34
AndrewSmiley

VPCを使用しているため、これはサブネットからの接続のみを受け入れるために設定する必要がある方法です。

  1. dBインスタンスで使用されるVPCセキュリティグループを選択します
  2. ポート3306でプライベートサブネットからのすべてのIPを許可する新しいルールを追加します

    例:ルールINBOUND 3306(MYSQL)172.33.11.0/24

  3. mysql workbench tcp/sshを使用すると動作します(AndrewSmileyの回答に従ってください)。

12
john

SSHトンネリングの使用をお勧めします。

  1. 要塞ホストへのPuTTYセッションを作成する
  2. [接続]-> [SSH]-> [トンネル]で、送信元ポート:3306、宛先:yourRDSendpointname:3306を指定します
  3. [追加]をクリックすることを忘れないでください。
  4. これらの設定で要塞ホストに接続します
  5. MySQLワークベンチに新しい接続を追加し、ローカルホストポート3306を指定します(ローカルクライアントマシンの3306で何も実行していない場合)
  6. RDSインスタンスのユーザー名とパスワードを入力します
5
user3067703

AWSのVPC接続を本当に使用し、パブリックIPを許可しない場合は、次の手順を実行します。

EC2とRDSの両方が割り当てられているセキュリティグループが1つある場合は、TCPにmysql 3306のインバウンドルールを追加しますが、ソースフィールドにはIPまたはサブネットを入れず、実際のセキュリティグループを入れますID。すなわちsg-9829f3d2。

個人的にVPCには2つのセキュリティグループがあります。

最初のセキュリティグループ1はEC2インスタンスで使用されており、EC2に必要なポート、つまり80と22のみを許可します。

2番目のセキュリティグループ2は、RDSインスタンスだけで使用されており、mysql(3302)を許可するルールが1つあり、ソースフィールドはセキュリティグループ1のIDに設定されています。

すべてのMysqlワークベンチSSHトンネリングは、2つのセキュリティグループでも機能します。

1
Skin

これはUBUNTU Mysqlワークベンチ用です

Bastion/jump/any instance(machine)からのポート3306でのリクエストを受け入れるために、RDSにリンクされたセキュリティグループにインバウンドルールを追加する必要があります。マシンにはパブリックIPが関連付けられている必要があります。

MYSQLワークベンチを介してSSHトンネルをセットアップする前に、最初にRDSに接続できるかどうか、machineで確認してください。

接続をテストするには:

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

{username}、{password}、およびHostを資格情報に置き換えます。

写真に従ってください、あなたは接続できるはずです。

Pictorial representation of the details to be entered.

1
CodeShadow

Bastionホスト(EC2インスタンス)にSSHトンネルを作成して、ローカルマシンからリモートRDSインスタンスにポートを転送できます。

mac/linuxでは、これはコマンドです(Windowsの場合、以下のリンクの指示に従ってください)。

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

その後、次の設定を使用してワークベンチに接続できます。

  • 接続方法:標準TCP

  • ホスト名:localhost

  • ポート3306

この投稿では、メソッドについてさらに詳しく説明します。 https://userify.com/blog/howto-connect-mysql-ec2-ssh-tunnel-rds/

1
Yasir

これが私にとって問題を解決したものです。 RDSダッシュボードで、インスタンスのセキュリティグループを確認します。これをクリックすると、セキュリティグループページに移動します。

インバウンドとアウトバウンドの両方の「すべてのトラフィック」と表示されますが、編集をクリックし、ソースに「マイIP」と表示されていることを確認します。すべてのIPを使用することはお勧めしません。これにより、インターネット上の任意のIPにアクセスできるようになります。静的IPがない場合は、接続が機能しなくなったらこのフィールドを更新してください。

この後、AWS RDS T2インスタンスに接続できました。

0
Basil Abbas