1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【AWS】EC2インスタンスで作成したLaravelとRDS(MySQL)を連携させる方法

Posted at

今回はAWSのRDS(MySQL)についてい書いていきます。

AWSにもDockerにも段々慣れてきたのですが、まだまだ知らない機能の方が多いですね。

さて、早速説明していきましょう。

#はじめに#

まず初めに前提条件として以下の条件を満たしている前提で話を進めめていきます。

・ECSで既にLaravelに関するコンテナの環境が構築済み
・EC2インスタンスへのSSH接続が可能

上記2つの条件を満たしていな場合は下記の記事にすべてやり方が書いてあるので是非ご覧ください!

【AWS】AWS超初心者が、頑張ってDockerで作ったLaravelプロジェクトをECR、ECS、EC2を使ってAWS上で動かしてみた

#RDSでMySQLのデータベースを作成#

サービス検索欄から「RDS」と検索してください。

そして、「データベースの作成」をクリック。

するとこのような画面になると思います。

image.png

そしたら以下の条件を元にデータベースを作成してください。

データベースの作成方法 標準作成
エンジンのオプション MySQL
バージョン 任意(大体8.*か5.7)
テンプレート 本番稼働用
DBクラスター識別子 database-1
マスターユーザー名・マスターパスワード 任意
Virtual Private Cloud (VPC) 利用するEC2インスタンスと同じVPCを選択
パブリックアクセス可能 あり
VPCセキュリティグループ 既存の選択
追加設定 最初のデータベース名(ローカル環境で使っていたデータベース名を入れるところ)

注意すべきポイントを2つ解説します。

1つ目は「Virtual Private Cloud (VPC)」です。
これは、書いてる通りEC2インスタンスと同じVPCを必ず選択してください。選択しないとEC2インスタンスへSSH接続したときにMySQLへアクセスできないのでくれぐれもご注意を。

2つ目は追加設定の「最初のデータベース名」です。
「DBクラスター識別子」ではdatabase-1と設定しましたが、これとは全く別物です。
例えばローカル環境でexample_databaseという名前のデータベースを利用していた場合は、example_databaseを「DBクラスター識別子」ではなく、「最初のデータベース名」に書いて下さい。

また、ローカルでのデータベース名と本番環境用のデータベース名を分けたい場合でも「最初のデータベース名」に入力してください。

「データベースの作成」をクリックし、しばらくするとデータベースが作成されます。

#SSH接続でMySQLのアクセス確認#

次に、EC2インスタンスにSSH接続を行いMySQLへアクセスしてみます。

その前に先ほど作成したデータベースの画面へ行ってください。

image.png

「セキュリティ」の「VPCセキュリティグループ」をクリックしてください(sg-から始まるもの)

※注意 「ネットワーク」のVPCではございませんのでご注意を。

そしたらインバウンドルールの編集を行います。

SSH接続でMySQLにアクセスするために、利用するEC2インスタンスの「プライベート IPv4 アドレス」をコピーして、「すべてのトラフィック」で「IPv4アドレス/32」として追加してください。

例:10.0.0.0/32

また、LaravelからもMySQLのデータベースにアクセスできるようにタイプで「MYSQL/Aurora」を選んで「0.0.0.0/0」もしくはALBのセキュリティグループを選んでください。

そしてルールを保存してください。

これでSSH接続でMySQLにアクセスが可能になり、Laravelからもデータベースにアクセスすることができます。

試しにSSH接続でMySQLにアクセスしてみましょう!

ssh -i "C:~\zaemonia-ec2-key.pem" ec2-user@ec2-xxx.ap-northeast-1.compute.amazonaws.com
mysql -u{マスターユーザー名} -p -h{MySQLのエンドポイント}
Enter password:{マスターパスワード}
#パスワード入力は文字が出力されないのでコピペするのが良いかと

無事MySQLにアクセス出来たら成功です!

これでアクセスできない場合は以下の事項を再確認してください。

・マスターユーザー名、マスターパスワード
・セキュリティグループのインバウンドルール

これら2つがしっかりと合っていれば必ずアクセスできます。

諦めずに頑張りましょう!!

以上、「【AWS】EC2インスタンスで作成したLaravelとRDS(MySQL)を連携させる方法」でした!

良ければ、LGTM、コメントお願いします。

また、何か間違っていることがあればご指摘頂けると幸いです。

他にも初心者さん向けに記事を投稿しているので、時間があれば他の記事も見て下さい!!

あと、最近「ココナラ」で環境構築のお手伝いをするサービスを始めました。

気になる方はぜひ一度ご相談ください!

Thank you for reading

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?