MySQLにssh経由で接続する色々な方法


今回はMySQLに接続する方法についてです。

MySQLへ接続するときはCUIからmysqlコマンドで接続したり、MySQL WorkbenchなどのGUIツールを使って接続していると思います。

開発時などであればそれで良いですが、実際にリリースされた本番環境やステージング環境のMySQLに接続しようとすると、単純に接続できないかと思います。FWによってMySQLのポートに到達できなかったり、到達できてもMySQLの設定で接続できなかったり・・・。

そこで今回はsshを経由することでMySQLに接続する方法をまとめてみました。

  • mysqlコマンドで接続する方法
  • MySQL workbenchで接続する方法
  • Sequelで接続する方法
  • Intellij IDEA Database tool

前提知識

どの方法もSSHトンネル(SSHポートフォワード)という技術を使います。これはMySQLやDB特有の技術ではないので、覚えておくと良いと思います。

mysqlコマンドの場合

これについてはこちらが参考になると思います。

SSHのポートフォワーディングでMySQLに接続する方法

AWS RDSを使っていて、publicでの直接接続ができない設定になっている場合はssh tunnelが必要です。RDSの方は以下の記事も参考になるでしょう。

Amazon VPC 内の RDS(MySQL) に SSH のポートフォワードを利用して接続するメモ

本題ですが、コマンドはこんな感じです。

ssh -f -N -C -L 10000:localhost:3306 hoge
mysql -u root -p -h 127.0.0.1 --port=10000

hogeの部分は適宜.ssh/configに設定した設定名か他の直接指定方式に変えましょう。バックグラウンドでトンネリングが動いているので必要なくなったらps aux | grep sshした後でkillって終わりです。

もしsshコマンドをshell script内で動かす場合はps aux | grep sshだと少し使い辛いのでlsofの方が良いかもしれません。以下の記事をご覧下さい。

特定ポートのプロセスをkillする(Linux, Mac)

MySQL Workbenchの場合

実際にはCUIだと厳しいものがあるので、GUIツールを使うと思います。MySQLのGUIと言えばWorkbenchが一番多機能かつ公式、ということで有名かと思います。

Workbenchでの接続方法ですが、非常に簡単です。

Manage_Server_Connections

Standard TCP/IP over SSHを選択して、後はsshのIP(or hostname), user name, pass, secret key、に加えて接続先のSSHの情報を入れればOKです。

Advancedタブの方には圧縮転送オプションなどがあるので必要に応じて設定してください。

Sequelの場合

Sequelも人気のMySQL GUIツールです。

Sequel_Pro

こちらも基本的に同じですね。

SSHタブに入力して終わりです。

Intellij IDEA Database toolの場合

これは利用ユーザは少ないと思いますが、私はよく利用しています。

IDEA使っている人のみですが、コード書きつつDBいじれるのは良いと思いますよ。

Data_Sources_and_Drivers

Data_Sources_and_Drivers

これも同じです。2つのタブに分かれていはいますが、SSHの設定を追加で入れるだけ。

いかがでしたでしょうか?

今回はMySQLと上記のツールでの例でしたが、大抵どのツールでもSSHトンネルをサポートしているかと思います。

GUIツール+ssh tunnelで快適なDBライフをお過ごしください!