如何通过SSH隧道连接到MySQL

时间:2020-03-05 15:30:24  来源:igfitidea点击:

默认情况下,MySQL服务器仅在localhost上侦听,这意味着它只能由在同一主机上运行的应用程序访问。

但是,在某些情况下,我们可能希望从远程位置连接到服务器。
一种选择是将MySQL服务器配置为允许远程连接,但这需要管理权限,并且可能会带来安全风险。

一种更安全的选择是创建从本地系统到服务器的SSH隧道。
SSH隧道是一种在客户端和服务器计算机之间创建加密的SSH连接的方法,通过该连接可以中继服务端口。

在本教程中,我们将说明如何创建SSH隧道并从远程客户端连接到MySQL服务器。
相同的说明适用于MariaDB。

准备工作

  • SSH客户端。
  • 通过SSH访问运行MySQL服务器的系统。

在Linux和macOS上创建SSH隧道

“ ssh”客户端已预安装在大多数基于Linux和Unix的系统上。

如果我们使用Linux或者macOS作为操作系统,则可以使用以下命令创建SSH隧道:

ssh -N -L 3336:127.0.0.1:3306 [USER]@[SERVER_IP]

使用的选项如下:

  • '-N'-告诉SSH不要执行远程命令。
  • '-L 3336:127.0.0.1:3306'-创建本地端口转发。本地端口('3306'),目标IP('127.0.0.1')和远程端口('3306')用冒号(':')分隔。
  • '[USER] @ [SERVER_IP]'-远程SSH用户和服务器IP地址。
  • 要在后台运行命令,请使用'-f'选项。
  • 如果SSH服务器正在侦听22以外的端口(默认端口),请使用'-p [PORT_NUMBER]'选项指定端口。

运行命令后,系统将提示我们输入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隧道:

  • 启动Putty,然后在“主机名(或者IP地址)”字段中输入服务器的IP地址:
  • 在“连接”菜单下,展开“ SSH”,然后选择“隧道”。在“源端口”字段中输入“ 3306”,在“目标”字段中输入“ 127.0.0.1:3306”:

单击“添加”按钮以添加隧道。

  • 返回“会话”页面以保存设置,因此我们无需再次输入设置。在“已保存的会话”字段中输入会话名称,然后单击“保存”按钮。
  • 选择已保存的会话,然后单击“打开”按钮登录到远程服务器。

将出现一个新窗口,要求我们输入用户名和密码。输入用户名和密码后,我们将登录到服务器,并创建SSH隧道。

设置公共密钥身份验证将使我们无需输入密码即可连接到服务器。

现在,我们可以使用本地MySQL客户端连接到远程数据库。

例如,如果我们使用的是HeidiSQL,请在“主机名/IP”字段中输入“ 127.0.0.1”,并在“用户”和“密码”字段中输入MySQL用户和密码: