MySQL DB インスタンスの作成と接続 - Amazon Relational Database Service

MySQL DB インスタンスの作成と接続

このチュートリアルでは、EC2 インスタンスと RDS for MySQL DB インスタンスを作成します。このチュートリアルでは、標準の MySQL クライアントを使用して EC2 インスタンスから DB インスタンスにアクセスする方法を示します。ベストプラクティスとして、このチュートリアルでは、プライベート DB インスタンスを仮想プライベートクラウド (VPC) に作成します。ほとんどの場合、EC2 インスタンスなど、同じ VPC 内の他のリソースは DB インスタンスにアクセスできますが、VPC 外部のリソースはアクセスできません。

チュートリアルを完了すると、VPC 内の各アベイラビリティーゾーンにパブリックサブネットとプライベートサブネットができます。1 つのアベイラビリティーゾーンで、EC2 インスタンスはパブリックサブネットにあり、DB インスタンスはプライベートサブネットにあります。

重要

AWS アカウントを作成するための料金はかかりません。ただし、このチュートリアルを完了すると、使用する AWS リソースのコストが発生する可能性があります。これらのリソースが不要になった場合は、チュートリアルの完了後に削除できます。

次の図は、チュートリアルが完了した時点の設定を示しています。

EC2 インスタンスと MySQL DB インスタンス。

このチュートリアルでは、次のいずれかの方法を使用してリソースを作成できます。

  1. AWS Management Console を使用する ‐「ステップ 2: MySQL DB インスタンスを作成する」と「ステップ 1: EC2 インスタンスを作成する

  2. AWS CloudFormation を使用してデータベースインスタンスと EC2 インスタンスを作成する ‐ (オプション) AWS CloudFormation を使用して VPC、EC2 インスタンス、MySQL インスタンスを作成する

最初の方法では、[簡単作成] を使用して、AWS Management Console でプライベート MySQL DB インスタンスを作成します。ここでは、DB エンジンタイプ、DB インスタンスサイズ、DB インスタンス識別子のみを指定します。[Easy create (簡易作成)] では、他の設定オプションのデフォルト設定を使用します。

代わりに [標準作成] を使用する場合は、DB インスタンスの作成時にさらに多くの設定オプションを指定できます。このようなオプションには、可用性、セキュリティ、バックアップ、メンテナンスの設定があります。パブリック DB インスタンスを作成するには、[標準作成] を使用する必要があります。詳細については、Amazon RDS DB インスタンスの作成 を参照してください。

前提条件

開始する前に、以下のセクションのステップを完了してください。

ステップ 1: EC2 インスタンスを作成する

データベースへの接続に使用する Amazon EC2 インスタンスを作成します。

EC2 インスタンスを作成するには
  1. AWS Management Console にサインインし、Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. AWS Management Console の右上で、EC2 インスタンスを作成する AWS リージョン を選択します。

  3. 次の図に示すように、[EC2 ダッシュボード] を選択し、次に [インスタンスの起動] を選択します。

    EC2 ダッシュボード。

    [インスタンスを起動] ページが開きます。

  4. [インスタンスを起動] ページで次の設定を選択します。

    1. [Name and tags] (名前とタグ) の、[Name] (名前) で、ec2-database-connect と入力します。

    2. [アプリケーションおよび OS イメージ (Amazon マシンイメージ)] で、[Amazon Linux] を選択し、[Amazon Linux 2023 AMI] を選択します。他の選択肢は、デフォルトの選択のままにします。

      Amazon Machine Image を選択します。
    3. [Instance type] (インスタンスタイプ) で [t2.micro] を選択します。

    4. [Key pair (login)] (キーペア (ログイン)) で、[Key pair name] (キーペア名) を選択して、既存のキーペアを使用します。Amazon EC2 インスタンスの新しい key pair を作成するには、[Create new key pair] (新しい key pair を作成する) を選択し、[Create key pair] (キーペアを作成する) ウィンドウを使用して作成します。

      新しいキーペアの作成については、「Amazon EC2 ユーザーガイド」の「キーペアの作成」を参照してください。

    5. ネットワーク設定の [SSH トラフィックを許可] で、EC2 インスタンスへの SSH 接続のソースを選択します。

      表示された IP アドレスが SSH 接続に適している場合は、[My IP] (マイ IP)を選択できます。それ以外の場合は、Secure Shell (SSH) を使用して VPC の EC2 インスタンスへの接続に使用する IP アドレスを決定します。パブリック IP アドレスを決定するには、別のブラウザウィンドウまたはタブで、https://checkip.amazonaws.com のサービスを使用できます。IP アドレスの例は 192.0.2.1/32 です。

      多くの場合、インターネットサービスプロバイダー (ISP) 経由、またはファイアウォールの内側から静的 IP アドレスなしで接続することがあります。その場合、クライアントコンピュータが使用する IP アドレスの範囲を確認してください。

      警告

      SSH アクセスに 0.0.0.0/0 を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

      以下のイメージは、[ネットワーク設定] セクションの例を示しています。

      EC2 インスタンスのネットワーク設定。
    6. 残りのセクションをデフォルト値のままにします。

    7. [概要] パネルで、EC2 インスタンス設定の概要を確認し、準備ができたら、[インスタンスの起動] を選択します。

  5. [起動ステータス] ページで、新しい EC2 インスタンスの ID (例: i-1234567890abcdef0) をメモします。

    [起動ステータス] ページの EC2 インスタンス ID。
  6. EC2 インスタンス ID を選択して、EC2 インスタンスのリストを開き、EC2 インスタンスを選択します。

  7. [詳細] タブで、SSH を使用して接続するときに必要な次の値を書き留めます。

    1. [インスタンスの概要] で、[パブリック IPv4 DNS] の値を書き留めます。

      [インスタンス] ページの [詳細] タブにある EC2 パブリック DNS 名。
    2. [インスタンスの詳細] で、[キーペア名] の値を書き留めます。

      [インスタンス] ページの [詳細] タブにある EC2 キーペア名。
  8. EC2 インスタンスの [インスタンス状態][実行中] になるまで待ってから、続行します。

ステップ 2: MySQL DB インスタンスを作成する

Amazon RDS の基本的な構成要素は DB インスタンスです。これは、MySQL データベースを実行する環境です。

この例では、[簡易作成] を使用して、db.t3.micro DB インスタンスクラスで MySQL データベースエンジンを実行する DB インスタンスを作成します。

簡易作成で MySQL DB インスタンスを作成するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール https://console.aws.amazon.com/rds/ を開きます。

  2. Amazon RDS コンソールの右上で、以前 EC2 インスタンスに使用した AWS リージョン を選択します。

  3. ナビゲーションペインで、[データベース] を選択します。

  4. [Create database (データベースの作成)] を選択し、[Easy create (簡易作成)] が選択されていることを確認します。

    簡易作成オプション。
  5. [設定] で、[MySQL] を選択します。

  6. [DB インスタンスサイズ] で、[無料利用枠] を選択します。

  7. [DB instance identifier] (DB インスタンス識別子) にdatabase-test1 と入力します。

  8. [マスターユーザー名] に、マスターユーザーの名前を入力するか、デフォルト名のままにします。

    [データベースの作成] ページは、次のイメージのようになります。

    データベースの作成ページ。
  9. DB インスタンス用に自動生成されたマスターパスワードを使用するには、[パスワードの自動生成] を選択します。

    マスターパスワードを入力するには、[パスワードの自動生成] チェックボックスをオフにして、[マスターパスワード][パスワードの確認] に同じパスワードを入力します。

  10. 以前に作成した EC2 インスタンスとの接続をセットアップするには、[EC2 接続のセットアップ - オプション] を開きます。

    [EC2 コンピューティングリソースに接続] を選択します。以前に作成した EC2 インスタンスを選択します。

    [EC2 接続のセットアップ] オプション。
  11. (オプション) [View default settings for Easy create (簡易作成のデフォルト設定を表示)] を開きます。

    簡易作成のデフォルト設定。

    [Easy Create (簡易作成)] で使用されるデフォルト設定を調べることができます。[データベース作成後に編集可能] 列には、データベース作成後に変更できるオプションが表示されます。

    • その列の設定に [いいえ] があり、別の設定が必要な場合は、[標準作成] を使用して DB インスタンスを作成できます。

    • その列の設定に [はい] があり、別の設定が必要な場合は、[標準作成] を使用して DB インスタンスを作成するか、DB インスタンスの作成後に設定を変更できます。

  12. [データベースの作成] を選択します。

    DB インスタンスのマスターユーザー名およびパスワードを表示するには、[認証情報の詳細の表示] を選択します。

    表示されるユーザー名とパスワードを使用して、マスターユーザーとして DB インスタンスに接続できます。

    重要

    マスターユーザーのパスワードを再度表示することはできません。記録していない場合は、変更する必要がある場合があります。

    DB インスタンスが有効になった後にマスターユーザーのパスワードを変更する必要がある場合は、そのように DB インスタンスを変更することができます。DB インスタンスの変更の詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。

  13. [データベース] リストで、新しい MySQL DB インスタンスの名前を選択し、詳細を表示します。

    DB インスタンスが使用できるようになるまで、DB インスタンスのステータスは [作成中] のままです。

    DB インスタンスの詳細。

    ステータスが [Available] (利用可能) に変わったら、DB インスタンスに接続できます。DB インスタンスクラスとストレージの合計によっては、新しいインスタンスを使用できるようになるまで最長 20 分かかることがあります。

(オプション) AWS CloudFormation を使用して VPC、EC2 インスタンス、MySQL インスタンスを作成する

コンソールを使用して VPC、EC2 インスタンス、MySQL DB インスタンスを作成する代わりに、AWS CloudFormation を使用して Infrastructure as Code として取り扱うことで、AWS リソースをプロビジョンできます。AWS リソースをより小さく管理しやすい単位に整理するには、AWS CloudFormation のネストされたスタック機能を使用できます。詳細については、「AWS CloudFormation コンソールでのスタックの作成」と「ネストされたスタックの操作」を参照してください。

重要

AWS CloudFormation は無料ですが、CloudFormation が作成するリソースは実動のものです。これらのリソースを終了するまで、標準使用料が発生します。合計料金はごくわずかです。料金を最小限に抑える方法については、「AWS 無料利用枠」を参照してください。

AWS CloudFormation コンソールを使用してリソースを作成するには、以下のステップを実行します。

  • ステップ 1: CloudFormation テンプレートをダウンロードする

  • ステップ 2: CloudFormation を使用してリソースを設定する

CloudFormation テンプレートをダウンロードする

CloudFormation テンプレートは、スタックに作成するリソースに関する設定情報が含まれる JSON または YAML のテキストファイルです。このテンプレートは、RDS インスタンスとともに VPC と踏み台ホストも作成します。

テンプレートファイルをダウンロードするには、次のリンク、MySQL CloudFormation template を開きます。

この Github ページで、[Download raw file] ボタンをクリックしてテンプレートの YAML ファイルを保存します。

CloudFormation を使用してリソースを設定する

注記

このプロセスを開始する前に、AWS アカウント に EC2 インスタンスのキーペアがあることを確認してください。詳細については、「Amazon EC2 キーペアおよび Linux インスタンス」を参照してください。

AWS CloudFormation テンプレートを使用する場合は、適切なパラメータを選択して、リソースが正しく作成されていることを確認する必要があります。以下のステップを実行します。

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

  2. [Create Stack] (スタックの作成) を選択します。

  3. [テンプレートの指定] セクションで、[コンピュータからテンプレートファイルをアップロード] を選択し、[次へ] をクリックします。

  4. [スタックの詳細を指定] ページで、次のパラメータを設定します。

    1. [スタック名][MySQLTestStack] に設定します。

    2. [パラメータ] で、3 つのアベイラビリティーゾーンを選択して、[アベイラビリティーゾーン] を設定します。

    3. [Linux 踏み台ホスト設定] で、[キー名] に EC2 インスタンスにログインするキーペアを選択します。

    4. [Linux 踏み台ホスト設定] で、[許可された IP 範囲] を IP アドレスに設定します。Secure Shell (SSH) を使用して VPC 内の EC2 インスタンスに接続するには、https://checkip.amazonaws.com のサービスを使用してパブリック IP アドレスを確認します。IP アドレスの例は 192.0.2.1/32 です。

      警告

      SSH アクセスに 0.0.0.0/0 を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

    5. [Database General configuration] で、[データベースインスタンスクラス][db.t3.micro] に設定します。

    6. [データベース名]database-test1 に設定します。

    7. [データベースマスターユーザー名] には、PDB のマスターユーザー名を入力します。

    8. このチュートリアルでは、[Secrets Manager で DB マスターユーザーパスワードを管理]false に設定します。

    9. [データベースパスワード] には、任意のパスワードを設定します。このパスワードは、チュートリアルの他の手順のために覚えておいてください。

    10. [Database Storage configuration] で、[Database storage type][gp2] に設定します。

    11. [Database Monitoring configuration] で、[Enable RDS Performance Insights] を false に設定します。

    12. その他の設定はすべてデフォルトの値のままにします。[次へ] をクリックして続行します。

  5. [スタックオプションの設定] ページでは、すべてのデフォルトオプションをそのまま使用します。[次へ] をクリックして続行します。

  6. [スタックの確認] ページで、データベースと Linux 踏み台ホストのオプションを確認した後、[送信] をクリックします。

スタックの作成プロセスが完了したら、BastionStack と RDSNS という名前のスタックを確認して、データベースへの接続に必要な情報をメモします。詳細については、「AWS Management Console での AWS CloudFormation スタックデータとリソースの表示」を参照してください。

ステップ 3: MySQL DB インスタンスに接続する

標準の SQL クライアントアプリケーションを使用して、DB インスタンスに接続できます。この例では、mysql コマンドラインクライアントを使用して、MySQL DB インスタンスに接続します。

MySQL DB インスタンスに接続するには
  1. DB インスタンスのエンドポイント (DNS 名) とポート番号を見つけます。

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

    2. Amazon RDS コンソールの右上で、DB インスタンスの AWS リージョン を選択します。

    3. ナビゲーションペインで、データベースを選択します。

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

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

      MySQL DB インスタンスに接続します。
  2. Amazon EC2 ユーザーガイド」の「Linux インスタンスに接続する」のステップに従って、先ほど作成した EC2 インスタンスに接続します。

    SSH を使用して EC2 インスタンスに接続することをお勧めします。SSH クライアントユーティリティが Windows、Linux、または Mac にインストールされている場合は、次のコマンド形式でインスタンスに接続できます。

    ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name

    例えば、ec2-database-connect-key-pair.pem が Linux の /dir1 に保存されていて、EC2 インスタンスのパブリック IPv4 DNS が ec2-12-345-678-90.compute-1.amazonaws.com であるとします。SSH コマンドは次のようになります。

    ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
  3. EC2 インスタンスのソフトウェアを更新して、最新のバグ修正とセキュリティ更新を入手します。これを行うには、次のコマンドを使用します。

    注記

    -y オプションを指定すると、確認メッセージを表示せずに更新をインストールします。インストール前に更新を確認するには、このオプションを省略します。

    sudo dnf update -y
  4. MariaDB の mysql コマンドラインクライアントを Amazon Linux 2023 にインストールするには、次のコマンドを実行します。

    sudo dnf install mariadb105
  5. MySQL DB インスタンスに接続します。例えば、次のコマンドを入力します。このアクションにより、MySQL クライアントを使用して、MySQL DB インスタンスに接続できます。

    endpoint の DB インスタンスの DNS 名 (エンドポイント) を、admin で使用したマスターユーザー名に置き換えます。パスワードの入力を求められたときに使用したマスターパスワードを入力します。

    mysql -h endpoint -P 3306 -u admin -p

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

    Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 3082 Server version: 8.0.28 Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>

    MySQL DB インスタンスへの接続の詳細については、「MySQL データベースエンジンを実行している DB インスタンスへの接続」を参照してください。DB インスタンスに接続できない場合は、「Amazon RDS DB インスタンスに接続できない」を参照してください。

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

  6. SQL コマンドを実行する。

    例えば、次の SQL コマンドは、現在の日付と時刻を表示します。

    SELECT CURRENT_TIMESTAMP;

ステップ 4: EC2 インスタンスと DB インスタンスを削除する

作成したサンプル EC2 インスタンスと DB インスタンスに接続して、探索したら、料金がこれ以上発生しないように、それらを削除します。

AWS CloudFormation を使用してリソースを作成した場合は、このステップをスキップして次のステップに進みます。

EC2 インスタンスを削除するには
  1. AWS Management Console にサインインし、Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. EC2 インスタンスを選択し、[インスタンスの状態]、[インスタンスの終了] の順に選択します。

  4. 確認を求めるメッセージが表示されたら、[Terminate (終了)] を選択します。

EC2 インスタンスの削除の詳細については、「Amazon EC2 ユーザーガイド」の「インスタンスの終了」を参照してください。

最終的な DB スナップショットを作成せずに DB インスタンスを削除するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択します。

  3. 削除する DB インスタンスを選択します。

  4. [アクション] で、[削除] を選択します。

  5. [最終スナップショットを作成][自動バックアップの保持] をクリアします。

  6. 確認を完了し、[削除] を選択します。

(オプション) CloudFormation で作成された EC2 インスタンスと DB インスタンスを削除する

AWS CloudFormation を使用してリソースを作成した場合は、サンプル EC2 インスタンスと DB インスタンスに接続して確認を済ませた後、それ以上料金が発生しないように、CloudFormation スタックを削除します。

CloudFormation リソースを削除するには
  1. AWS CloudFormation コンソールを開きます。

  2. CloudFormation コンソールの [スタック] ページで、ルートスタック (VPCStack、BastionStack、または RDSNS という名前がついていないスタック) を選択します。

  3. [削除] を選択します。

  4. 確認を求めるメッセージが表示されたら、[削除] を選択します。

CloudFormation でのスタックの削除方法の詳細については、「AWS CloudFormation ユーザーガイド」の「AWS CloudFormation コンソールでのスタックの削除」を参照してください。

(オプション) DB インスタンスを Lambda 関数に接続する

RDS for MySQL DB インスタンスを Lambda サーバーレスコンピューティングリソースに接続することもできます。Lambda 関数を使用すると、インフラストラクチャをプロビジョニングしたり管理したりせずにコードを実行できます。Lambda 関数を使用すると、1 日に 数十件のイベントから 1 秒間に数百件のイベントまで、あらゆる規模のコード実行リクエストに自動的に応答することもできます。詳細については、「Lambda 関数と DB インスタンスを自動的に接続する」を参照してください。