web-dev-qa-db-ja.com

ローカルマシンからAWS上のMySQLに接続する

AWS上のMySQL DBにアクセスするローカルマシンで開発環境をセットアップしようとしていますが、「接続できません」というメッセージが引き続き表示されます。

mysql_connect('xxx.xxx.xxx.xxx:3306', 'USERNAME', 'PASSWORD');

また、my.cnfファイルのbind-addressをコメント化し、接続しているIPアドレスへのアクセス許可を付与しました。

誰でもこれをうまく機能させることができますか?

26
Jeffrey Hunter

これはAmazonによってファイアウォールで保護されていると思われます。SSHトンネルを使用してみてください。

http://blogs.Oracle.com/divyen/entry/connecting_mysql_server_on_Amazon

注:IPフィルタリングを使用している場合でも、MySQLをパブリックインターネットに開かないでください。 SSHトンネルはより安全です。その最良の部分:トンネルは、マシン上のlocalhost:3306でアクセスでき、構成を変更する必要はありません:)

13
Stephan B

Elastic Beanstalkで作成されたRDSインスタンスの2013年8月の私の経験は次のとおりです。

0)RDSインスタンスがすでに作成されていると仮定
1)管理コンソールにログインします:https://console.aws.Amazon.com/console/home
2)[サービス]-> [VPC]を選択します
3)セキュリティグループを選択します(左側)
4)「RDS DBのセキュリティグループ...」という説明のグループを選択します
5)ページの下部にある[選択したセキュリティグループ]パネルで、[受信]を選択します
6)ルールとしてMySQLを選択します。
7)ローカルマシンのIPアドレスを入力します。 145.23.32.15/32
8)[ルールの追加]をクリックし、ルールの変更を適用します

これを実行した後、ローカルマシンからmysqlを使用してデータベースに接続できました。

a)管理コンソールから「サービス」->「RDS」を選択します
b)DBインスタンス(私は1つしかありません)をクリックし、必要なインスタンスの[詳細ページに移動]を選択します
c)エンドポイントからホストとポートを取得します
d)ターミナルセッションから次のようなことを行います。mysql --Host blah.blah.blah.us-west-2.rds.amazonaws.com --port 3306 -u my-user-name -p

37
mikemay

RDSインスタンスを介してAWSでMySqlを使用している場合、接続するIPアドレスを「DBセキュリティグループ」に追加する必要があります。これを行うには、AWS Managment Consoleに移動し、RDSを選択します。
1。左側のパネルで[DBセキュリティグループ]を選択します
2。 「デフォルト」を選択
3。選択ボックスから「CIDR/IP」を選択し、ワークステーションのパブリックIPアドレスを入力します。例:
23.234.192.123/32(単一のIPの/ 32を忘れないでください
4。 「追加」をクリックします
5。数分待ってから、MySqlクライアントを接続します。

これはRDSインスタンスにのみ適用されます。EC2インスタンスにインストールされたMySqlを使用している場合、手順はリモートマシンからMySqlにアクセスするのと同じです。

29
Cbox

私はMySQL Workbench http://www.mysql.com/products/workbench/ をRDSで使用してきましたが、うまく機能します。新しいデータベースサービスインスタンスの作成と保存は非常に簡単です。 [サーバー管理]の下の[新しいサーバーインスタンス]をクリックし、プロンプトに従います。そのインスタンスのAWS RDSウェブページで提供される情報(たとえば、エンドポイント)を入力する必要があります。

注:実際に接続するには、「DBセキュリティグループ」にIPアドレスを追加する必要があります。リンクは左側の列にあり、「ナビゲーション」というタイトルが付いています。 「CIDR/IP」オプションを使用します(もう1つはEC2 Security Groupです)。 IPの後に、例で使用する「/ 32」などの「/ ##」を必ず含めてください(ページに表示されます)。数秒で、IPアドレスが承認されます。

その後、MySQL Workbenchに戻り、新しいサーバーインスタンスの作成プロセスを完了します。

接続を使用するには、コードは次のようになります(my Java code)の抜粋):

String url = "jdbc:mysql://yourdatabasename.foo.us-east-1.rds.amazonaws.com:3306/";
String userName = "your_user_name";
String password = "your_password";
String dbName = "your_db_name";
String driver = "com.mysql.jdbc.Driver";
Connection connection = DriverManager.getConnection(url + dbName, userName, password);
2
chrisco

私はWindows 7マシンを使用していますが、AWS RDBに接続するには、次の3つの変更を行う必要がありました。

  1. AWSコンソールでのVPCセキュリティグループの更新(mikemayの上記と同様)

    • https://console.aws.Amazon.com から、Services(左上)をクリックし、VPCを選択します。
    • 次にセキュリティグループを選択します
    • 「RDS DBのセキュリティグループ...」という説明があるセキュリティグループをクリックします。
    • [インバウンド]タブで、[新しいルールの作成]ドロップダウンで[MYSQL]を選択します。
    • IPアドレスをCIDR形式で追加し、ルールの追加をクリックします。
    • [ルールの変更を適用]をクリックします。
  2. ローカルMySQL構成のmy.cnf更新

    • 「bind-address = 127.0.0.1」を「bind-address = 0.0.0.0」に変更します
    • 「skip-networking」をコメントアウトします
  3. Windowsファイアウォールをオフにする

    • コントロールパネル/システムとセキュリティ/ Windowsファイアウォールに移動し、Windowsファイアウォールをオフにします。

これらの変更後、私は両方を介して接続することができます

  • データベースを使用したMySQL WorkBench->データベースへの接続
  • コマンドプロンプト

    mysql.exe -h <AWS DB Endpoint> -U <UserName> -P <Port Number, likely 3306> -p
    
1
user3078359

RDSを作成する場合、ローカルまたは他のインスタンスからのmySQL接続を受け入れるようにファイアウォールを構成する必要があります。そのため、パケットはファイアウォールレベルでドロップされるため、これを解決するには次のようにする必要があります。

  • AWSコンソールにログインしますRDSに移動します

enter image description here

MySQLサーバーのセキュリティグループをメモします(私の場合はawseb-e)

  • セキュリティグループをクリック
  • 中央のメニューawsebでグループをクリックします
  • 受信タブをクリック

リストからmySQLを選択し、クライアントサーバーの詳細を追加して、ルールを保存します

enter image description here 注:IPを選択したら、他のIPを使用する必要がある場合は、AWSでIPを選択します

https://www.whatismyip.com/my-ip-information/

iP4 IPを追加します

enter image description here

0
vaquar khan