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

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

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

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

在Linux和macOS创建SSH隧道

ssh客户端已预安装在大多数基于Linux和Unix的系统上。如果您使用Linux或macOS作为操作系统,则可以使用命令创建SSH隧道。

ssh -N -L 3336:127.0.0.1:3306 [USER]@[SERVER_IP]这是创建本地到远程服务器SSH隧道的命令。

运行命令后,不会在后台运行,一直占用着你当前终端会话。你可以添加-f选项指示SSH客户端在后台运行。

相当于时映射127.0.0.1本地的3306端口到远程服务器的3306端口,但数据时通过SSH加密并传输。

-N指示SSH不要执行远程命令。-L 3336:127.0.0.1:3306创建本地端口转发。本地端口时3306,本地地址是127.0.0.1。远程端口是3306

[USER]@[SERVER_IP]远程Linux用户和服务器的IP地址。

如果你的SSH服务器不是使用默认的22端口,或者正在监听着其它端口,你需要使用-p [PORT_NUMBER]选项指定端口。

运行命令后,系统会提示您输入SSH用户密码。输入后,您将登录到服务器,并建立SSH隧道。

最好设置基于SSH密钥的身份验证,然后你就可以在不输入密码的情况下连接到服务器。

现在,您可以使用本地计算机MySQL客户端连接到远程数据库,并通过登录凭据访问MySQL服务器。

mysql -u MYSQL_USER -p -h 127.0.0.1这是你连接远程MySQL服务器mysql客户端命令,出现提示时,输入MySQL用户密码。

要在运行ssh客户端的控制台中终止SSH隧道类型,请输入CTRL+C

在Window创建SSH隧道

Windows用户首先需要下载并安装SSH客户端程序。最受欢迎的Windows SSH客户端是PuTTY。您可以在此处下载PuTTY

启动PuTTY,然后在Host name (or IP address)字段中输入服务器的IP地址。

Connection菜单下,展开SSH并选择Tunnels。在Source Port字段中输入3306,在Destination字段中输入远程服务器的IP和端口格式是127.0.0.1:3306

单击Add按钮创建隧道。返回到Session。当SSH隧道创建完成后。这样就无需再次输入它们。

Saved Session字段中输入会话名称,然后单击Save按钮。选择保存的会话,然后通过单击Open按钮。

一个新窗口询问您的用户名和密码将显示出来。输入用户名和密码后,您将登录到服务器,并创建SSH隧道。

设置公钥身份验证将使您无需输入密码即可连接到服务器。您现在可以使用本地MySQL客户端连接到远程数据库。

例如,如果您使用的是HeidiSQL,则在Hostname/IP字段中输入127.0.0.1,在UserPassword​​字段中输入MySQL用户和密码。

结论

MySQL是流行的开源数据库服务器,仅在本地主机上侦听传入的连接。创建SSH隧道可以使您从本地客户端安全地连接到远程MySQL服务器。

如果您有任何疑问,请在下面发表评论。