MySQL Workbenchのポートフォワード機能を使いラズパイのMySQLに接続する

外部のデータベースサーバーに触るときに気を付けないといけないのが、ログインユーザーとデータの漏洩なんだけど、データベースのポートを公開してしまうとちょっと危ない。社内ネットワークならばいいのだけど、流石に公開済みの WEB サーバーのデータベースのポートを開いてしまうのはかなり危険。

なので、MySQLの場合、phpmyadmin を使ってアクセスをするか、という話が多いのだが、実は、MySQL Workbench から SSH のポートフォワード機能が使えるのを最近知った。最近のレンタルサーバーは SSH が公開されている場合が多いので、この 22 ポートを通して内部の MySQL に接続する。

例えば、先日ラズパイに導入した redmine が使っている MySQL に PC から接続する場合は、こんな感じになる。

image

どうせ、ローカルなネットワークでしか動かさないので、PC から直接 MySQL に接続してもいいのだが(実際、ちょっと前まではそれしかないと思っていた)、クライアント PC で SSH を使って、サーバー(この場合はラズパイ)で sshd が動いていれば、この ssh 同士でポートフォワードしてくれる。動的に作成される(と思う)ローカルな SSH のポートを通して、ラズパイの22番を呼び出す。ラズパイの ssh がこれを受けて、MySQL の 3306番に接続してくれる。

MySQL Workbench で接続を作るときに、connection method で “Standard TCP/IP over SSH” を選択して各種設定を入力する。通常の SSH と同じように key file も使える。

image

“Test Connection” で接続を試す。

image

これが出なくて、ダンマリになる場合は、SSH サーバー名やポートが間違っている可能性が高い。うちの場合、avahi-daemon で *.local で繋がるようにしているのだけど、raspi3.local は接続できるのだけど、VMWare 上の ubuntu.local には接続できなかった。でも、IP アドレスを指定すると通るので、そのあたりもチェックが必要。

image

これでローカルな MySQL やポートを空けた DB サーバーと同じ用に MySQL Workbench から接続ができるようになる。ちなみに、DB サーバーが WEB サーバーとは別にある場合は、こんな設定になる。

image

OutServer とあるのが、いわゆる「踏み台」のサーバーで、SSH を公開しているところ。このサーバーから DB Server に接続するという形になる。この SSH によるポートフォワード機能を使うと、MySQL だけじゃなくてリモートデスクトップにも使えるので、難しい VPN の設定をしなくてもいいんじゃないかなと思ったり。

カテゴリー: 開発 パーマリンク