0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【無料枠でやる】EC2からRDSのmysqlに接続

Last updated at Posted at 2020-05-04

EC2からRDSのmysqlにworkbenchで接続

予備知識はEC2、RDSが何をするかは知っててAWSでの構築は初めてというレベル
ゴールはクライアントGUIでDB操作できるまで
セキュアを意識してEC2を通さないとRDSにアクセスさせない
勉強かねてなので無料枠でやる

やったこと

AWSアカウントを作る

リンク先の進行に沿って登録
[awsアカウント作成]

コンソールのショートカットを設定

よく使う機能をコンソールのヘッダーにセット
ヘッダーのピンのマークをクリックして必要なものをドラッグするだけ
毎回コンソールからはかったるい
先にやっとくと何だったっけの時にすぐに参照できる
aws_setting.png

今回使うのは 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ダウンロード]

workbenchを起動したら Connections +

aws_setting3.png  「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から何で課金発生したかわかりました…)

すぐ止めてたので微課金でしたが…無料だけでやりたい方は気をつけて…
aws_setting4.png

追記

書いてあるとおりにやっても上手くいかないことが多かったので記事にしようと思いました
qiitaの記事はもっと細切れにしてリンクでつなげていくのが主流なのかな
記事当たりの文字数減らして探したい情報に到達しやすくする感じか
次からそうしよう

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?