目次:
デフォルトでは、MySQLサーバーはlocalhostでのみリッスンします。つまり、同じホストで実行されているアプリケーションからのみアクセスできます。
ただし、状況によっては、リモートの場所からサーバーに接続したい場合があります。 1つのオプションは、リモート接続を許可するようにMySQLサーバーを構成することですが、これには管理者権限が必要であり、セキュリティリスクを引き起こす可能性があります。
より安全な代替手段は、ローカルシステムからサーバーへのSSHトンネルを作成することです。 SSHトンネリングは、サービスポートを中継できるクライアントとサーバーマシンの間に暗号化されたSSH接続を作成する方法です。
このガイドでは、SSHトンネルを作成し、リモートクライアントからMySQLサーバーに接続する方法を説明します。 MariaDBにも同じ手順が適用されます。
前提条件
- MySQLサーバーが実行されているシステムへのSSH Client.SSHアクセス。
LinuxおよびmacOSでSSHトンネルを作成する
ssh
クライアントは、ほとんどのLinuxおよびUnixベースのシステムにプリインストールされています。
ssh -N -L 3336:127.0.0.1:3306 @
使用されるオプションは次のとおりです。
-
-N
リモートコマンドを実行しないようにSSHに指示します。-L 3336:127.0.0.1:3306
ローカルポート転送を作成します。 ローカルポート(3306
)、宛先IP(127.0.0.1
)、およびリモートポート(3306
)はコロン(:)で区切られています。@
-リモートSSHユーザーとサーバーIPアドレス。バックグラウンドでコマンドを実行するには、-f
オプションを使用します。SSHサーバーが22(デフォルト)以外のポートでリッスンしている場合、-p
オプションでポートを指定します。
コマンドを実行すると、SSHユーザーのパスワードを入力するよう求められます。 入力後、サーバーにログインし、SSHトンネルが確立されます。 SSHキーベースの認証を設定し、パスワードを入力せずにサーバーに接続することをお勧めします。
これで、ローカルマシンのMySQLクライアントが
127.0.0.1:3336
を指すようになり、リモートデータベースログイン資格情報を入力して、MySQLサーバーにアクセスできます。
たとえば、コマンドライン
mysql
クライアントを使用してMySQLサーバーに接続するには、次を発行します。
mysql -u MYSQL_USER -p -h 127.0.0.1
ここで、
MYSQL_USER
は、データベースにアクセスする権限を持つリモートMySQLユーザーです。
プロンプトが表示されたら、MySQLユーザーのパスワードを入力します。
SSHトンネルを終了するには、sshクライアントが実行されているコンソールで
CTRL+C
します。
WindowsでSSHトンネルを作成する
Windowsユーザーは、まずSSHクライアントプログラムをダウンロードしてインストールする必要があります。 最も人気のあるWindows SSHクライアントはPuTTYです。 こちらからPuTTYをダウンロードできます。
PuTTYを使用してMySQLサーバーへのSSHトンネルを作成するには、次の手順を実行します。