|
A5:SQL Mk-2 から SSHトンネルを利用して MySQL へ接続するこの文書はVersion 2.7.2までを対象として書かれています。Version 2.8.0以降で Oracle (直接接続)、PostgreSQL (直接接続)、MySQL (直接接続)の場合は、A5:SQL Mk-2単体(Cygwin等不要)でSSH経由接続をすることができます。 このページでは A5:SQL Mk-2 から SSHトンネルを利用して MySQL へ接続する手順を示します。 例えば、よくあるレンタルサーバーは外部からMySQLに直接接続出来る設定になっていることは稀ですが、SSHトンネルを介せば接続出来ることがあります。 また、自宅から会社の公開されているSSHサーバーにアクセスし、そこを経由してMySQLサーバーに接続することも出来ます。 ここでは、MySQLを使って接続していますが、ポートを固定で一つのみ使うタイプのRDBMS製品ならば同じように接続が可能です。 この説明で使ったソフトウェアのバージョンは以下のとおりです。 A5:SQL Mk-2 Version 2.6.3 Cygwin 版 SSHクライアント 5.9p1-1 (c:\cygwin へインストールされている) ケース1(SSHサーバーとMySQLサーバーが同じサーバーである場合)このケースはSSHサーバーとMySQLサーバーが同じサーバーに導入されている場合です。例えば、自宅からレンタルサーバー上のMySQLに接続する場合などはこの典型です。サーバー "server1" 上でMySQLサーバーが3306番ポートを利用しており、SSHサーバーが22番ポートを利用している場合を例にします。ホスト名やポート番号等は適宜変更して下さい。 手順1.クライアントPCからSSHサーバーへSSHトンネルを作成する。コマンドラインから以下のコマンドを実行します。SSHのユーザー名として、"matsubara" を指定していますが、こちらも適宜変更して下さい。パスワードが聞かれたらパスワードも入力します。 鍵ファイルを指定するには、さらに -i オプションで指定します。 >c:\cygwin\bin\ssh.exe -2 -N -f -L 3307:127.0.0.1:3306 matsubara@server1 -p 22 オプションの意味 -2 SSH2を利用 -N SSHトンネルのみ使用 -f バックグラウンド実行 -L トンネルを作成 (-L クライアント側ポート:127.0.0.1:MySQLのポート) matsubara@server1 SSHユーザー名@ホスト名 -p SSHサーバーのポート番号を指定 手順2.A5:SQL Mk-2からデータベースを登録A5:SQL Mk-2からデータベースの追加と削除画面でMySQLを指定してデータベースを登録します。必ずホスト名には "localhost" を、ポート番号には sshコマンドで指定した「クライアント側ポート」を指定します。 ここで「テスト接続」ボタンを押下し、接続が出来たら成功です。 ケース2(SSHサーバーとMySQLサーバーが異なるサーバーである場合)このケースは自宅から会社の公開されているSSHサーバーに接続し、それを経由して社内のMySQLサーバーへ接続する場合などです。SSHサーバーからMySQLサーバーへは接続出来る必要がありますが、MySQLサーバーは外部に公開されている必要はありません。 サーバー "server1" 上の22番ポートでSSHサーバーが稼働し、そこからサーバー "server2" 上の3306番ポートで待ち受けしているMySQLサーバーへ接続する例を示します。 手順1.クライアントPCからSSHサーバーへSSHトンネルを作成する。コマンドラインから以下のコマンドを実行します。SSHのユーザー名として、"matsubara" を指定していますが、こちらも適宜変更して下さい。パスワードが聞かれたらパスワードも入力します。 鍵ファイルを指定するには、さらに -i オプションで指定します。 >c:\cygwin\bin\ssh.exe -2 -N -f -L 3307:server2:3306 matsubara@server1 -p 22 ここでは、-L 3307:server2:3306 と指定しているのが肝となります。server2はMySQLのサーバーを表しますが、server1からの立場でのホスト名又はIPアドレスを指定します。クライアントPCから server2 へIPプロトコルで接続出来る必要はありません。 手順2.A5:SQL Mk-2からデータベースを登録A5:SQL Mk-2からデータベースの追加と削除画面でMySQLを指定してデータベースを登録します。ケース1と同様に必ずホスト名には "localhost" を、ポート番号には sshコマンドで指定した「クライアント側ポート」を指定します。 ここで「テスト接続」ボタンを押下し、接続が出来たら成功です。 接続を放置すると接続が切断されてしまう場合SSHサーバーの設定によっては、接続後に放置すると一定時間で「Connection reset by peer」などが表示されて強制切断されてしまう場合があります。この場合は、SSHサーバーの設定ファイルを編集してKeepaliveを設定します。 UNIXやLINUX等の多くのOSでは、/etc/ssh/sshd_config です。この設定ファイルに以下の記述を追加します。 ClientAliveInterval 15 ClientAliveCountMax 5 この例では15秒に1度サーバーからクライアントに対してKeepaliveメッセージを送信します。 そして連続で5回Keepaliveメッセージに応答がなかった場合、サーバーは接続を切断します。 |
|