この記事では、AWS Cloud9のEC2インスタンスに立てたMySQLサーバーに、ローカル環境のMySQLクライアント(MySQL Workbench) から接続する方法についてご説明します。
この記事は、Udemyオンライン講座「はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう」とProglus「Ruby on Rails5入門」のサポート記事です。
なお、アクセス時期によっては実際のサイトと記事中の画像で表示が異なる場合があります。
目次
・クラウドコンピューティングサービスのAWSで利用できるサービスの一つです。
・クラウド上のサーバー資源を利用して、ブラウザ上の統合開発環境(IDE)でWebアプリケーションを開発することができます。
・Cloud9を起動すると、AWSのEC2インスタンスに接続され、開発を進めることができます。
Webサービスの開発を進める上で、MySQLサーバーに接続してSQLコマンドを実行し、DB操作を行う場面は多々あります。
そしてクラウド上で動くリモートのMySQLサーバーに接続するためには、SSH接続などで認証する必要があります。
Cloud9で開発を行う場合、EC2インスタンスが自動的にブラウザ上のIDEと接続されます。そのため認証情報がユーザーに見えない形となっているので、Cloud9のEC2環境で起動しているMySQLサーバーに接続するためには少し工夫が必要です。
ここでは、Cloud9のMySQLサーバーにローカル環境から接続するまでの流れについて解説します。
解説で用いる主なバージョンについては以下の通りです。
ローカル環境:
PC: MacBook Pro 13-inch(2020, intelプロセッサ)
MySQL Workbench: 8.0.25
Cloud9環境:
インスタンスタイプ: t2.micro (1 GiB RAM + 1 vCPU)
プラットフォーム: Ubuntu Server 18.04 LTS
MySQL: 8.0.25
SSH接続でリモートサーバーとの認証に用いるため、まずは公開鍵・秘密鍵のキーペアを作成します。
まずawsのEC2コンソールを開き、「キーペア」を選択します。
「キーペアを作成」を押し、新規作成を行います。
キーペア名を入力し、ファイル形式としてpemを選択します。「キーペアを作成」を押します。
するとcer形式のファイルとして秘密鍵がダウンロードできるので、分かりやすい場所に保存しておきます。
この秘密鍵は再発行ができないので、もしファイルを削除してしまった場合は、もう一度新しいキーペアの作成を行なってください。
先ほどダウンロードした秘密鍵から、公開鍵を生成します。
公開鍵の生成にはssh-keygenコマンドを使用します。
$ ssh-keygen -y -f {秘密鍵ファイルまでのパス} ssh-rsa .....
出力のssh-rsa
で始まる文字列が公開鍵となります。
以下のようなエラーが発生する場合は、秘密鍵のファイルの権限を変更する必要があります。
$ ssh-keygen -y -f demo.cer @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/Users/ricky/Downloads/demo.cer' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "/Users/ricky/Downloads/demo.cer": bad permissions
chmodコマンドを管理者権限で実行し、0600を指定します。
sudo chmod 0600 {秘密鍵ファイルまでのパス}
公開鍵が出力できたら、Cloud9の開発環境を起動してください。
ターミナルで以下のように入力し~/.ssh/authorized_keys
ファイルを開きます。
$ vim ~/.ssh/authorized_keys
出力された公開鍵を、以下のようにファイル下部に新しく貼り付けます。
ここで既に存在する鍵は絶対に削除しないでください。Cloud9のコンソールからブラウザ開発環境に接続できなくなります。
次に、ローカルPCからCloud9のEC2インスタンスにSSHできるように、セキュリティグループの設定を変更します。
Cloud9のコンソールで環境名をクリックし、詳細画面に飛びます。
「Go To Instance」をクリックすると、Cloud9の環境があるEC2インスタンスの詳細画面に飛びます。
「セキュリティ」から「セキュリティグループ」のリンクをクリックし、セキュリティグループの詳細に飛びます。
「インバウンドルールの編集」をクリックします。
ローカルのPCからの接続を許可するため、ソースに「0.0.0.0」と「::/0」を追加しましょう。完了したら、「ルールを保存」をクリックします。
これでネットワーク周りの設定は完了です。ローカルPCからSSHができることを確認しましょう。
もう一度EC2インスタンスの詳細を開き、インスタンスのグローバルIPを確認します。
そして以下のコマンドで接続します。
$ ssh -i {秘密鍵ファイルまでのパス} ubuntu@{EC2インスタンスのグローバルIP}
上手くいけば、EC2環境にSSHで入ることができるはずです。
次はWorkbenchで接続情報を入力し、Cloud9のEC2環境で起動しているMySQLサーバーに接続してみましょう。
MySQLは既にセットアップ済みで、起動状態であるとします。
Workbenchを起動します。
「MySQL Connections」の右の「+」アイコンをクリックします。
すると接続の設定画面が表示されます。
まず、Connection Nameで適当なコネクション名を設定します。そしてConnection Methodの部分で「Standard TCP/IP over SSH」を選択します。
次はSSH認証に関する設定を行います。SSH HostnameにはEC2インスタンスのパブリックIPを入力し、SSH UsernameにはEC2インスタンスのユーザー名を入力してください。
SSH Key Fileでは、先ほどssh
-keygen
で作成した秘密鍵のファイルまでのパスを指定します。
デフォルトの場合は図の通りですが、MySQLの設定に変更がある場合は、ホスト名やポート番号、ユーザー名も適宜変更を行ってください。
これで準備が整いました、Test Connectionを押してCloud9上のMySQLサーバーとの接続確認を行います。
以下のように表示されたら成功です。
「OK」ボタンを押せば、WorkbenchからMySQLサーバーに接続することができます。
これで、Cloud9のMySQLサーバーにローカル環境から接続することが出来ました!
オンライン学習サービスProglus(プログラス)でプログラミングを学び、創れる人になろう!
プレミアムプランを2週間無料体験しよう
今すぐ詳細を確認する