2019-06-25
【Amazon Lightsail】インスタンス上のMySQLに外部からSSH接続する
前提
- Lightsailインスタンス上にMySQLが設置済み
- LAMPイメージもしくはNginxイメージであればデフォルトで入ってます。
- ローカルにMySQL Workbench あるいは Sequel ProなどのMySQLクライアントがダウンロード済み
本記事ではMySQL Workbenchを使っていますが他のものでも同様にできるはずです。
MySQLで接続用ユーザーを作る
LightsailインスタンスにSSHログイン
MySQLに接続(デフォルトのパスワードは
~/bitnami_application_password
に書いてあります)
Console
mysql -u root -p
- ユーザー一覧を確認します。
MySQL Console
SELECT user,host FROM mysql.user;
- 以下のように出力されます。
+---------------+-----------+
| user | host |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+
外部からSSH接続する際、使用するUserのHostは localhost
ではなく 127.0.0.1
である必要があるため、新規ユーザーを作成します。これは、 localhost
の場合は接続の際にUNIXソケットが使用されてしまうからです。 127.0.0.1
と明示することでTCPで接続されるようになります。自分はここでめちゃくちゃつまづきました。(MySQLにおける localhost ≠ 127.0.0.1 は常識らしいです…義務教育で教えてほしかった…)
ホスト名が localhost だった場合、パフォーマンスのためなのかソケットが暗黙で使用されます。
以下に簡単な手順を示します。ユーザー名やパスワード、権限等は適宜変更してください。
MySQL Console
# 仮のDB作成
CREATE DATABASE sample_db;
# 接続用ユーザー作成
CREATE USER 'ryo'@'127.0.0.1' IDENTIFIED BY 'yourpassword';
# 権限の付与
GRANT ALL ON sample_db.* TO 'ryo'@'127.0.0.1';
これでMySQL側の設定は完了です。
MySQLクライアントの接続設定
MySQLクライアント(画像はMySQL Workbench)の新規接続作成画面を開き、以下のように設定します。
Connection Method:
Standard TCP/IP over SSH を選びます。SSH Hostname:
LightsailのPublic IPアドレスの22番ポートを指定します。SSH Key File:
インスタンス作成時に入手したxxx.pem
ファイルを指定します。パスワードは不要です。MySQL Hostname:
127.0.0.1:3306MySQL Server Port:
3306MySQL Username:
先ほど作成したユーザーの名前MySQL password:
先ほど作成したユーザーのパスワード
Test Connection
を押して、以下のようにポップアップが出れば接続成功です!