EC2からRDSのmysqlにworkbenchで接続
予備知識はEC2、RDSが何をするかは知っててAWSでの構築は初めてというレベル
ゴールはクライアントGUIでDB操作できるまで
セキュアを意識してEC2を通さないとRDSにアクセスさせない
勉強かねてなので無料枠でやる
やったこと
- AWSのアカウントを作る
- コンソールのショートカットを設定
- EC2でインスタンスを立てる
- EC2にsshで接続できない(原因になったポイント)
- EC2にsshで接続
- RDSでmysqlインスタンスを立てる
- RDSのmysqlにEC2経由で接続できない(原因になったポイント)
- RDSのmysqlにEC2経由で接続
- workbenchでRDSにアクセス
- AWSの課金に関する失敗談
AWSアカウントを作る
リンク先の進行に沿って登録
[awsアカウント作成]
コンソールのショートカットを設定
よく使う機能をコンソールのヘッダーにセット
ヘッダーのピンのマークをクリックして必要なものをドラッグするだけ
毎回コンソールからはかったるい
先にやっとくと何だったっけの時にすぐに参照できる
今回使うのは EC2 と RDS のみ
EC2でインスタンスを立てる
まずはEC2
インスタンスの作成からAmazon Linux AMI(無料利用枠の対象)
次のステップがあるうちはポチポチ進める
インスタンスの詳細
└ストレージ
└タグ
└セキュリティグループ
└確認と起動
無料利用枠の対象とか追加料金が適用されますとか記載があるので
よくみて全部無料でいける範囲に収める
セキュリティグループではローカル検証したいだけなのでひとまず
「タイプ」:SSH
「ソース」:マイIP
起動でキーペアがないで!といわれるので新しく作成みたいなのを選ぶ
名前を適当(仮にaccesskey)に決めてダウンロード
サーバー起動
AWSがインスタンスを構成して起動してくれるのを待つあいだに次の手順を進める
EC2にsshで接続できない(原因になったポイント)
pemをssh設定に移してpermissionを変更
chmod
しておかないと接続時に制限甘くない?と注意される
mv /Users/{username}/Downloads/{accesskey}.pem ~/.ssh/{accesskey}.pem
chmod 600 /Users/{username}/.ssh/{accesskey}.pem
インスタンス作成時にセキュリティグループに自分の ip を入れてなかった場合は
インスタンスのインバウンドルールに追加しておく
「タイプ」:SSH
「ソース」:マイIP
EC2にsshで接続
EC2エンドポイントは再起動すると変わることがある(つながらないときここもみる)
ssh -i /Users/{username}/.ssh/{accesskey}.pem {EC2エンドポイント}
Amazon Linux AMIがでたら接続成功
RDSでmysqlインスタンスを立てる
次はRDS
データベースの作成
「エンジン」:mysql
「バージョン」:5.7.22(202005時点の安定版)
「テンプレート」:無料利用枠
「インスタンスサイズ」:db.t2.micro(largeとかは課金枠なので注意)
「ストレージの自動スケーリングを有効にする」をオフ
(スケーリングされたら追加料金なので)
認証情報の設定
「マスターユーザー名」:(仮にroot)
パスワードの自動生成で作られるパスワードはインスタンス生成中に確認できる
自分で設定でもどちらでもいい
作成
RDSのmysqlにEC2経由で接続できない(原因になったポイント)
EC2 のインスタンスの詳細からプライベートIPをコピー(すぐペーストすることになる)
EC2 左メニューにあるセキュリティグループで新しいグループを追加
「グループの名前」:(仮にdbgroup)
インバウンドのルールを追加
「タイプ」:MYSQL/Aurora(対象ポートが3306になる)
「ソース」:EC2のプライベートIP(さっきコピーしたやつ)
EC2 にmysqlクライアントをいれる
素でたたくと80版がはいっちゃうので無効化して57を有効化する
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y
sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community
sudo yum install mysql-community-client.x86_64
RDSのmysqlにEC2経由で接続
mysql -h {RDSエンドポイント} -u{root} -p
パスワードいれたら mysql>
でOK
workbenchでRDSにアクセス
workbenchを起動したら Connections +
「Connection Name」:任意でなんでも 「Connection Method」:```Standard TCP/IP over SSH``` 「SSH Hostname」:EC2のエンドポイント 「SSH Usernme」:```ec2-user```(変えた記憶がなければコレ) 「SSH Password」:*いれない* 「SSH Key File」:EC2にssh接続するときのpem 「MySQL Hostname」:RDSのエンドポイント 「MySQL Server Port」:```3306```(変えた記憶がなければコレ) 「Username」:mysqlのマスターユーザー名 「Password」:mysqlのマスターパスワード(いれなくても聞かれるからどちらでも) 「Default Schema」:デフォルトにしたいスキーマ(作った時点では空欄でいい)Test Connection Successfuly!
接続して show databases;
通ったら成功
AWSの課金に関する失敗談
セキュリティグループで EC2 からの 3306 を通してあげるのに到達できなくて迷走してたとき
RDS 立てなおしてみよう
→ Amazon Aurora ためしてみよう
→ インスタンスサイズ:db.r5.large
(defaultでこれだった)
→ 上手くいかない…もういっかいmysqlで立てなおそう…
→ 翌日…あれ…課金発生してる…(Cost Explorerから何で課金発生したかわかりました…)
すぐ止めてたので微課金でしたが…無料だけでやりたい方は気をつけて…
追記
書いてあるとおりにやっても上手くいかないことが多かったので記事にしようと思いました
qiitaの記事はもっと細切れにしてリンクでつなげていくのが主流なのかな
記事当たりの文字数減らして探したい情報に到達しやすくする感じか
次からそうしよう