読者です 読者をやめる 読者になる 読者になる

RDSからEC2に接続できない

AWS WordPress

事象

AWS上にWordPressサイトを構築する際、以下を参考に進めていった。

#11 スペック変更とEC2からの接続 | Amazon Web Services入門 - プログラミングならドットインストール

しかし、Security Groupを設定する箇所がどこにもない。代わりにこんな画面メッセージが!
f:id:lunacism107:20141116150520p:plain

よく分からないから、設定せずに進めると以下エラーがコンソール上に出てDBに接続できない。

[ec2-user@ip-172-31-31-90 ~]$ mysql -h mydbinstance.ckny9yq2iiro.ap-northeast-1.rds.amazonaws.com:3306 -u dbuser -p
Enter password: 
ERROR 2005 (HY000): Unknown MySQL server host 'mydbinstance.ckny9yq2iiro.ap-northeast-1.rds.amazonaws.com:3306' (0)

背景

RDSでは、Security Groupを利用するが、現在の仕様ではデフォルトでVPCを利用するように変わっている。

VPCとは、以下のように、複数AZ(Availability Zone)にまたがって、VPCの中にいるインスタンスたちに鍵をかけることができるもの。

Supported Platforms - Amazon Elastic Compute Cloud

対処法(あくまでも今回の一例、万人に適用できるわけではない)

1. RDSのVPCをEC2と同一に設定
(今回のケースではセキュリティグループが同じVPCにたまたま所属していた) 
f:id:lunacism107:20141116174427p:plain 
2. RDSのSecurity GroupをEC2と同一に設定
f:id:lunacism107:20141116173630p:plain
3. VPCのセキュリティグループ設定で、InBoundを設定する。(defaultの設定値を参考)
Type: ALL Traffic
Source: sg-** からはじまるGroup ID
f:id:lunacism107:20141116173424p:plain

こうすることで、VPC内で自由に通信ができるようになる。

また、ポート番号3306はつける必要がない!!

#追記
上記を修正したら繋がるものの、下記エラーでログインできない。
初回接続時にCTRL+Zしたのがいけなかったのかも、、、

[ec2-user@ip-172-31-31-90 ~]$ mysql -h mydbinstance.ckny9yq2iiro.ap-northeast-1.rds.amazonaws.com -u dbuser -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'dbuser'@'172.31.31.90' (using password: YES)

#追記2
結局、RDSを作り直しました。。