MySQL データベースエンジンを実行している DB インスタンスへの接続 - Amazon Relational Database Service

MySQL データベースエンジンを実行している DB インスタンスへの接続

MySQL データベースエンジンを実行している DB インスタンスに接続するには、DB インスタンスを作成する必要があります。詳細については、「Amazon RDS DB インスタンスの作成」を参照してください。Amazon RDS によって DB インスタンスがプロビジョニングされたら、標準の MySQL クライアントアプリケーションまたはユーティリティを使用してインスタンスに接続できます。接続文字列では、DB インスタンスのエンドポイントの DNS アドレスをホストパラメータとして指定し、DB インスタンスのエンドポイントのポート番号をポートパラメータとして指定します。

RDS DB インスタンスを認証するには、MySQL の認証メソッドのいずれかと AWS Identity and Access Management (IAM) データベース認証を使用できます。

  • MySQL の認証方法のいずれかを使用して MySQL に対して認証する方法については、MySQL ドキュメントの「認証方法」を参照してください。

  • IAM データベース認証を使用して MySQL を認証する方法については、「MySQL および PostgreSQL の IAM データベース認証」を参照してください。

MySQL コマンドラインクライアントなどのツールを使用して、MySQL DB インスタンスに接続できます。MySQL コマンドラインクライアントを使用する方法については、MySQL ドキュメントの「mysql - MySQL コマンドラインクライアント」を参照してください。接続に使用できる GUI ベースのアプリケーションは、MySQL Workbench です。詳細については、「MySQL Workbench のダウンロード」ページを参照してください。MySQL のインストール (MySQL コマンドラインクライアントを含む) については、「MySQL のインストールと更新」を参照してください。

ほとんどの Linux ディストリビューションには、Oracle MySQL クライアントではなく MariaDB クライアントが含まれています。Amazon Linux 2 を含むほとんどの RPM ベースの Linux ディストリビューションに MySQL コマンドラインクライアントをインストールするには、次のコマンドを実行します。

yum install mariadb

ほとんどの DEB ベースの Linux ディストリビューションに MySQL コマンドラインクライアントをインストールするには、次のコマンドを実行します。

apt-get install mariadb-client

MySQL コマンドラインクライアントのバージョンを確認するには、次のコマンドを実行します。

mysql --version

現在のクライアントバージョン用の MySQL ドキュメントを表示するには、次のコマンドを実行します。

man mysql

Amazon VPC の外部から DB インスタンスに接続するには、DB インスタンスがパブリックにアクセス可能であり、アクセスが DB インスタンスのセキュリティグループのインバウンドルールで許可されているなど、いくつかの要件を満たす必要があります。詳細については、「Amazon RDS DB インスタンスに接続できない」を参照してください。

MySQL DB インスタンスへの接続では、セキュアソケットレイヤー (SSL) 暗号化を使用できます。詳細については、「MySQL DB インスタンスで SSL を使用する」を参照してください。AWS Identity and Access Management (IAM) データベース認証を使用している場合は、必ず SSL 接続を使用してください。詳細については、「MySQL および PostgreSQL の IAM データベース認証」を参照してください。

また、ウェブサーバーから DB インスタンスに接続することもできます。詳細については、「チュートリアル: ウェブサーバーと Amazon RDS DB インスタンスを作成する」を参照してください。

注記

MariaDB DB インスタンスとの接続方法の詳細については、「MariaDB データベースエンジンを実行している DB インスタンスへの接続」を参照してください。

MySQL DB インスタンスの接続情報の検索

DB インスタンスの接続情報には、エンドポイント、ポート、およびマスターユーザーなどの有効なデータベースユーザーが含まれます。例えば、エンドポイントの値が mydb.123456789012.us-east-1.rds.amazonaws.com であるとします。この場合、ポート値は 3306 であり、データベースユーザーは admin です。この情報を考慮して、接続文字列に次の値を指定します。

  • ホスト、ホスト名または DNS 名には、mydb.123456789012.us-east-1.rds.amazonaws.com を指定します。

  • ポートで、3306 を指定します。

  • ユーザーには、admin を指定します。

DB インスタンスに接続するには、MySQL DB エンジンの任意のクライアントを使用します。例えば、MySQL コマンドラインクライアントまたは MySQL ワークベンチを使用できます。

DB インスタンスの接続情報を検索するには、AWS Management Console、AWS CLI describe-db-instances コマンド、または Amazon RDS API DescribeDBInstances オペレーションを使用して、詳細を一覧表示できます。

AWS Management Console で DB インスタンスの接続情報を探すには

  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択して DB インスタンスのリストを表示します。

  3. MySQL DB インスタンスの名前を選択して、その詳細を表示します。

  4. [接続とセキュリティ] タブで、エンドポイントをコピーします。また、ポート番号を書き留めます。DB インスタンスに接続するには、エンドポイントとポート番号の両方が必要です。

    
                                DB インスタンスのエンドポイントとポート
  5. マスターユーザー名を見つける必要がある場合は、[設定] タブを選択し、[マスターユーザー名] の値を表示します。

AWS CLI を使用して MySQL DB インスタンスの接続情報を検索するには、describe-db-instances コマンドを呼び出します。呼び出しで、DB インスタンス ID、エンドポイント、ポート、マスターユーザー名をクエリします。

Linux、macOS、Unix の場合:

aws rds describe-db-instances \ --filters "Name=engine,Values=mysql" \ --query "*[].[DBInstanceIdentifier,Endpoint.Address,Endpoint.Port,MasterUsername]"

Windows の場合:

aws rds describe-db-instances ^ --filters "Name=engine,Values=mysql" ^ --query "*[].[DBInstanceIdentifier,Endpoint.Address,Endpoint.Port,MasterUsername]"

出力は次のようになります。

[ [ "mydb1", "mydb1.123456789012.us-east-1.rds.amazonaws.com", 3306, "admin" ], [ "mydb2", "mydb2.123456789012.us-east-1.rds.amazonaws.com", 3306, "admin" ] ]

Amazon RDS API を使用して DB インスタンスの接続情報を検索するには、DescribeDBInstances オペレーションを呼び出します。出力で、エンドポイントアドレス、エンドポイントポート、およびマスターユーザー名の値を検索します。

MySQL コマンドラインクライアントからの接続 (非暗号化)

重要

クライアントとサーバーが同じ VPC にあり、ネットワークが信頼されている場合に限り、暗号化されていない MySQL 接続を使用します。暗号化された接続の使用については、「SSL を使用した MySQL コマンドラインクライアントからの接続 (暗号化)」を参照してください。

MySQL コマンドラインクライアントを使用して DB インスタンスに接続するには、DB インスタンスに接続するコマンドプロンプトで次のコマンドを入力します。-h パラメータは、DB インスタンスの DNS 名 (エンドポイント) に置き換えます。- P パラメータは、使用中の DB インスタンスのポートに置き換えます。-u パラメータでは、マスターユーザーなどの有効なデータベースユーザーのユーザー名に置き換えます。プロンプトが表示されたら、マスターユーザーパスワードを入力します。

mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com -P 3306 -u mymasteruser -p

ユーザーのパスワードを入力すると、次のような出力が表示されます。

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 350 Server version: 5.6.40-log MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

SSL を使用した MySQL コマンドラインクライアントからの接続 (暗号化)

インスタンスが作成されるとき、Amazon RDS で DB インスタンスの SSL 証明書が作成されます。SSL 証明書認証を有効にした場合、SSL 証明書には、なりすまし攻撃から保護するために、SSL 証明書の共通名 (CN) として DB インスタンスのエンドポイントが含まれます。SSL を使用して DB インスタンスに接続するには、ネイティブのパスワード認証、または IAM データベース認証を使用できます。IAM データベース認証を使用して DB インスタンスに接続する方法については、「MySQL および PostgreSQL の IAM データベース認証」を参照してください。ネイティブのパスワード認証を使用して DB インスタンスに接続するには、以下の手順を行います。

MySQL コマンドラインクライアントを使用して SSL で DB インスタンスに接続するには

  1. すべての AWS リージョンで使用できるルート証明書をダウンロードします。

    証明書のダウンロードについては、SSL/TLS を使用した DB instance への接続の暗号化 を参照してください。

  2. MySQL コマンドラインクライアントを使用して SSL で DB インスタンスに接続するには、コマンドプロンプトで次のコマンドを入力します。-h パラメータは、DB インスタンスの DNS 名 (エンドポイント) に置き換えます。--ssl-ca パラメータは、必要に応じて SSL 証明書のファイル名に置き換えます。- P パラメータは、使用中の DB インスタンスのポートに置き換えます。-u パラメータでは、マスターユーザーなどの有効なデータベースユーザーのユーザー名に置き換えます。プロンプトが表示されたら、マスターユーザーパスワードを入力します。

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem -P 3306 -u mymasteruser -p
  3. SSL 接続で、SSL 証明書のエンドポイントに対する DB インスタンスのエンドポイントの照合が必要になることがあります。

    MySQL 5.7 以降の場合:

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=VERIFY_IDENTITY -P 3306 -u mymasteruser -p

    MySQL 5.6 以前の場合:

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-verify-server-cert -P 3306 -u mymasteruser -p
  4. プロンプトが表示されたら、マスターユーザーパスワードを入力します。

以下のような出力結果が表示されるはずです。

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 350 Server version: 5.6.40-log MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

MySQL Workbench からの接続

MySQL Workbench から接続するには

  1. MySQL Workbench (MySQL Workbench のダウンロード) をダウンロードしてインストールします。

  2. MySQL Workbench を開きます。

    
                        MySQL Workbench
  3. [データベース] から、[Manage Connections (接続の管理)] を選択します。

  4. [Manage Server Connections (サーバー接続の管理)] ウィンドウで、 [新規] を選択します。

  5. [Connect to Database (データベースに接続)] ウィンドウに、次の情報を入力します。

    • [Stored Connection] – 接続の名前 (MyDB など) を入力します。

    • [ホスト名] – DB インスタンスのエンドポイントを入力します。

    • [ポート] – DB インスタンスで使用するポートを入力します。

    • [ユーザー名] – マスターユーザーなど、有効なデータベースユーザーのユーザー名を入力します。

    • [パスワード] – 必要に応じて、[Store in Vault (ボールトに保存)] を選択し、ユーザーのパスワードを入力して保存します。

    ウィンドウは次のようになります。

    
                        MySQL Workbench 接続ウィンドウ

    MySQL Workbench の機能を使用して、接続をカスタマイズできます。例えば、[SSL] タブを使用して SSL 接続を設定できます。MySQL Workbench の使用方法については、「MySQL Workbench のドキュメント」を参照してください。

  6. 必要に応じて [Test Connection] を選択して、DB インスタンスへの接続が成功したことを確認します。

  7. [Close] を選択します。

  8. [データベース] から、[Connect to Database (データベースに接続)] を選択します。

  9. [Stored Connection] から、接続を選択します。

  10. [OK] を選択します。

MySQL DB インスタンスへの接続のトラブルシューティング

新しい DB インスタンスへの接続に失敗する一般的な原因には、次の 2 つがあります。

  • MySQL アプリケーションまたはユーティリティが実行されているデバイスまたは Amazon EC2 インスタンスからの接続を許可しないセキュリティグループを使用して DB インスタンスが作成されました。DB インスタンスが VPC で作成された場合、接続を許可する VPC セキュリティグループが必要です。詳細については、「Amazon Virtual Private Cloud VPC および Amazon RDS」を参照してください。

    セキュリティグループでインバウンドのルールを追加または編集できます。ソース には [My IP] を選択します。これにより、ブラウザで検出された IP アドレスから DB インスタンスへのアクセスが許可されます。

    DB インスタンスが VPC の外部で作成された場合は、接続を許可する DB セキュリティグループが必要です。

  • DB インスタンスが、デフォルトポートの 3306 を使用して作成されたが、会社のファイアウォールルールで、社内ネットワークのデバイスからそのポートへの接続がブロックされています。この問題を解決するには、別のポートでインスタンスを再起動します。

接続の問題の詳細については、「Amazon RDS DB インスタンスに接続できない」を参照してください。