#はじめに
今回AWSで2つ目のインスタンスを作成してEC2にてMySQLに接続するとERROR 2003 (HY000): Can't connect to MySQL server on
下記のエラーが出た。
$ mysql -h RDSのエンドポイント.ap-northeast-1.rds.amazonaws.com -P 3306 -u username -p
Enter password: ************
ERROR 2003 (HY000): Can't connect to MySQL server on
MySQLが繋がらないというエラーに遭遇しこれの解決を備忘録として投稿します。
#投稿者の環境
MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports)
macOS Big Sur バージョン11.0.1
PHP 7.3.23
Laravel Framework 6.20.7
#考えられる原因
インスタンスとRDSのセキュリティグループが関連づけられていないのが今回の原因
#RDSのセキュリティグループを確認
VPC セキュリティグループを確認
- AWSコンソール > [RDS] > [データベース] > 対象のDB識別子リンクで確認したい詳細画面表示
2.[接続とセキュリティ]タブ > [VPC セキュリティグループ]のリンクでVPC セキュリティグループ
をクリックして中身を確認
インバウンドルールを編集
インバウンドルールを編集をクリック
インバウンドルールの中身を確認
ここからが重要です!!
RDSのセキュリティグループにあるインバウンドルールが結びつけたいインスタンスのセキュリティグループと関連づけているのかを確認してください!
私の場合はインスタンスのセキュリティグループの名前にEC2-of-study-postsiteと名付けています。今回はこちらがちゃんと関連づけているのが確認できます。
#インスタンスのセキュリティグループを確認
###インスタンス確認
次に問題のあるインスタンスを確認して下さい。
インスタンス > 問題があるインスタンスをクリック > セキュリティタブをクリック > セキュリティグループを確認して下さい。今回はlanch-wizard-4がEC2のセキュリティグループに関連づけられています。
RDSのセキュリティグループはEC2-of-study-postsite
インスタンスのセキュリティグループはlanch-wizard-4
これらが矛盾しているためMySQLを探すことができないです。
###セキュリティグループを確認
問題のあるインスタンスレ点を入れる > アクション > セキュリティ > セキュリティグループを変更の順に進める。
###問題のあるセキュリティグループを変更
- 問題のあるセキュリティグループを
削除
(セキュリティグループのデータは残ります) - セキュリティグループを編集をクリック。
- クリックすると今まで保存されたセキュリティグループの一覧が表示されます。
- RDSに結びつけられたセキュリティグループを選択
- セキュリティグループを追加をすると下に反映されます
- 最後に
保存
をクリック
###EC2を立ち上げてMySQLの接続を確認
最後にMySQLの接続ができるかを確認しましょう!
//EC2ターミナルにて
mysql -h RDSのエンドポイント.ap-northeast-1.rds.amazonaws.com -P ポート番号 -u admin -p
上記のターミナルの意味ですが纏めたサイトがあるので一部を抜粋しました。
#最後に
今回はセキュリティグループが原因だったので解決できて良かったです。
AWSは概念なのでイマイチ分からないことが多いです。デプロイができたとしてもどこかが反映されていないことがこれからも増えると思います。