[MySQL] 踏み台経由で別サーバーにあるMySQLにWorkbenchで接続する

スポンサーリンク
MySQL

業務でクライアントPCから MySQL Workbench を使って、踏み台サーバーの先にあるMySQLに接続したいという要望があったので、そのときの対応です。

クライアント・サーバーの構成イメージ

構成イメージは、以下の図の通りです。

  • クライアント:Windows
  • 踏み台サーバー:Amazon Linux
  • DBサーバー:Amazon Linux

クライアントからMySQL Workbenchを利用し、
踏み台サーバーを経由で、DBサーバーにあるMySQLのデータベースに接続します。

踏み台サーバーからMySQLへの接続設定

ここでは、踏み台サーバー ⇔ MySQL 間の接続設定を行います。
すでに、踏み台サーバーからMySQLに接続できる方は、飛ばしてください。

MySQLで踏み台サーバー用のユーザーを作成

まずは 、DBサーバーのMySQLにroot でログインします。
次に、ユーザーを作成しますが、アクセスを許可する IP アドレスまたはホスト名を指定します。
ここでは、作成するユーザー名を test_user、踏み台サーバーのIPアドレスを 172.20.21.240 とします。

$ mysql -u root -p
mysql> CREATE USER "test_user"@"172.20.21.240" IDENTIFIED BY [password];

作成できているか確認します。

mysql> SELECT user, host FROM mysql.user;

+---------------+-----------------+
| user          | host            |
+---------------+-----------------+
| test_user     | 172.20.21.240   |
| mysql.session | localhost       |
| mysql.sys     | localhost       |
| root          | localhost       |
+---------------+-----------------+

次に権限を与えます。
今回は参照権限のみ与えます。
※全権限を与えるコマンドも記載しておきます。

# 参照権限のみを付与する場合
mysql> GRANT SELECT ON *.* TO "test_user"@"172.20.21.240";

# 全権限を付与する場合
mysql> GRANT ALL PRIVILEGES ON *.* TO "test_user"@"172.20.21.240";

AWSで踏み台サーバー ⇔ DBサーバーの通信を許可する

AWSのセキュリティグループで、DBサーバーは許可した通信以外は、禁止の設定にしています。今回、踏み台サーバーからのアクセスを許可するために設定を変更します。

AWSのコンソールから、DBサーバーのセキュリティグループで、ポート3306を踏み台サーバー向けに許可する設定を追加します。

踏み台サーバーにmysql clientをインストール

踏み台サーバーにログインし、mysql clientをインストールします。

$ yum install mysql-community-client
$ rpm --import https://repo.mysql.com/RPM-GPC-KEY-mysql-2022

踏み台サーバーからMySQLへ接続確認

踏み台サーバーからMySQLに接続できるか確認します。

踏み台サーバーにログインして、コマンドでMySQLに接続します。
DBサーバーのIPアドレスを172.20.22.120とします。

$ mysql -h 172.20.22.120 -u test_user -p [DB名]

無事、ログインできればOK!

MySQL Workbenchの設定

ここからクライアントPCの作業です。
まず、MySQL Workbenchをインストールします。

次に設定です。
スタートメニューからWorkbenchを起動します。

+ボタン から新しいコネクションを作成します。

以下、赤枠を埋めていきます。

  • SSH Hostname:172.20.21.240 (踏み台サーバーのIPアドレス)
  • SSH Username:[踏み台サーバーのユーザー名]
  • MySQL Hostname:172.20.22.120 (DBサーバーのIPアドレス)
  • MySQL Server Port:3306
  • Username:test_user
  • Default Schema:[DB名]

設定完了後、Test Connection ボタンを押下します。

SuccessfullyがでればOKです!

接続確認

作成したコネクションを起動します。

試しにSQLを実行してみます。

ちゃんと結果が返ってきました。

まとめ

はまったところとしては、踏み台サーバー用のMySQLユーザーを作成するところでした。ホスト名にIPアドレスを設定しないといけないので、そこがポイントでした。

コメント

タイトルとURLをコピーしました