EC2から別のVPCにあるRDSのMySQLへログインしようとして、VPCのピアリング設定しましたが、RDSへログインできなくて悪戦苦闘しました。
たいていの場合は、単純な見落としなので、整理すれば解決すると思いチェック項目を表に残します。
僕の場合は、ルーティングテーブルの設定漏れでした。
サービス | 項目 | 内容 | |
---|---|---|---|
1 | VPC | ピアリング | リクエスタ→EC2のあるVPCに設定、アクセプタ→RDSのあるVPCに設定 |
2 | ピアリング | 作成後に承認していない | |
3 | ルートテーブル | EC2側→RDSのあるVPCへのルート記載漏れ、RDS側→EC2のあるVPCへのルート記載漏れ | |
4 | ルートテーブル | EC2・RDSのあるサブネットの関連付け漏れ | |
5 | セキュリティグループ | RDS側→インバウンド:TCP:3306の記載漏れ、EC2側→アウトバウンド:すべてのトラフィックの記載漏れ | |
6 | VPC | EC2のあるVPCのDNS解決→有効化 | |
7 | ピアリング | アクセプタのDNS解決→有効化 | |
8 | EC2 | EC2 | VPCとサブネットグループの取り間違え |
9 | EC2 | セキュリティグループの取り間違え | |
10 | RDS | サブネットグループ | VPCとサブネットグループの取り間違え |
11 | RDS | セキュリティグループの取り間違え | |
12 | RDS | マスターユーザーとマスターパスワードの間違え |
ec2内
$ nslookup database-1.c66gddgkm8ok.ap-northeast-1.rds.amazonaws.com
# Error
# => 名前解決ができていない → 6、7
$ mysql -u admin -p -h xxxx.xxxx.ap-northeast-1.rds.amazonaws.com
# ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (110)
# => ルーティングorファイアーウォールの設定ができてない → 3、4、5 など
$ mysql -u admin -p -h xxxx.xxxx.ap-northeast-1.rds.amazonaws.com
# ERROR 1045 (28000): Access denied for user 'admin'@'xxx.xxx.xxx.xxx' (using password: YES)
# => ユーザー名orパスワードが間違っている → 12