実現したいこと
手元のMac端末からRDSに接続したいです。
前提
https://qiita.com/j-sunaga/items/36e84f22bfabdcd9cb62
を行った
発生している問題・エラーメッセージ
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘database-XXX.rds.amazonaws.com:3306’ (60)
となります。
該当のソースコード
mysql -h [RDSのエンドポイント] -P 3306 -u admin -p
試したこと
ユーザー名
パスワード
セキュリティグループの設定
パブリックアクセス可能
の確認
IAMユーザーにRDSに関連する権限を付与
ポリシーの作成:
左側のメニューで「ポリシー」を選択し、「ポリシーの作成」をクリックします。
JSONタブを選択:
「JSON」タブを選択して、ポリシードキュメントをJSON形式で記述します。以下は、例としてのポリシーのJSONドキュメントです。
json Copy code { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds:DescribeDBInstances", "rds:ListTagsForResource", "rds-db:connect" ], "Resource": "*" } ] }
ポリシーの確認と作成:
JSONドキュメントを入力したら、「確認」をクリックしてポリシーの詳細を確認し、「ポリシーの作成」をクリックします。
IAMユーザーにポリシーをアタッチ:
左側のメニューで「ユーザー」を選択し、対象のIAMユーザーを選択します。次に「アタッチされたポリシー」タブを開き、「ポリシーのアタッチ」をクリックします。作成したポリシーを検索し、アタッチ
インバウンドルールにアクセス元(Mac端末)のグローバル IP アドレスを追加していますか?
> mysql -h [RDSのエンドポイント] -u admin -p
-pのあとに3306がないです
> mike2mike4 さん
ポート番号の指定は -P です。(大文字 P)
インバウンドルールにアクセス元(Mac端末)のグローバル IP アドレスを追加していますか?
>はい セキュリティグループのインバウンドルールにグローバルip/32で設定追加しました。
すいません
mysql -h [RDSのエンドポイント] -P 3306 -u admin -p でエラーは起きています。
RDS のホスト名が database-XXX.rds.amazonaws.com となっていますが、そちらの Mac 上で名前解決はできていますでしょうか? nslookup コマンドで確認してみてください。
nslookup database-XXX.rds.amazonaws.com
% nslookup nslookup database-XXX.rds.amazonaws.com
Server: 192.168.2.1
Address: 192.168.2.1#53
Non-authoritative answer:
database-XXX.rds.amazonaws.com
canonical name = ecXXXXX.ap-northeast-1.compute.amazonaws.com.
Name: ecXXXXXX.ap-northeast-1.compute.amazonaws.com
Address: XXX.XX.XXX.XXX
でした。
192.168.2.1 はグローバル IP アドレスではないですね…。
https://www.gate02.ne.jp/media/it/column_98/
RDSを配置しているサブネットのルートテーブルを確認してください。
また、インターネットにDBを公開するのは危険なので少なくともセキュリティグループで自分のIP以外許可しないようにしてください。
yu_1985様
>RDSを配置しているサブネットのルートテーブルを確認してください。
XX.X.X.X/16 local
0.0.0.0/0 [インターネットゲットウェイ]
となっています。
>また、インターネットにDBを公開するのは危険なので少なくともセキュリティグループで自分のIP以外許可しないようにしてください。
承知しました。
あなたの回答
tips
プレビュー