如何远程连接到 MySQL 并保持安全?

Cyc*_*one 4 mysql remote-access freebsd

如您所知,保持 MySQL 端口 3306 打开是不安全的。但是,我想使用一个好的MySQL管理程序,而不是需要打开3306端口的phpMyAdmin。

当然,我可以只允许我的 IP 地址使用 ipfw 连接到端口 3306。问题是我的 IP 地址每 24 小时更改一次,因此我必须为每个 IP 地址添加一个新规则。

没有更好的方法来保持 MySQL 安全并仍然使用远程连接吗?

Sve*_*ven 9

是的,使用 SSH 端口转发。

在本地机器上,发出命令

ssh -L 3306:127.0.0.1:3306 username@mysqlhost.com
Run Code Online (Sandbox Code Playgroud)

然后你可以将本地 MySQL 管理工具连接到本地机器上的 3306 端口。您必须考虑到 MySQL 的连接似乎也来自该连接127.0.0.1,因此您的 MySQL 用户的访问权限最重要的是相应地设置。

如果您碰巧在本地机器上使用 MySQL 服务器,端口 3306 将已被占用,但您可以使用不同的端口进行转发 ( 13306:127.0.0.1:3306),然后将您的管理工具指向该不同的端口。

(更多信息与man ssh)。


编辑更多解释作为对您评论的回答:

  1. 您将在您通常工作的本地机器上使用此命令,就在您想要对数据库进行一些管理工作之前。它的作用是通过 SSH 创建一个隧道,将所有流向本地机器上的端口的流量转发到另一台机器上的另一个端口。
  2. 在这种情况下,隧道在 MySQL 服务器上结束,您可以通过 SSH 直接联系它。该部分username@mysqlhost.com只是一个占位符,替换为你的shell账户的用户名和MySQL服务器的IP地址或主机名。在您的本地机器上,这绝对不是localhost。这部分与您的 MySQL 用户名完全无关,因为 SSH 不了解 MySQL。
  3. 如果您在数据库上以 root 身份工作,则将您的 MySQL 管理工具连接到主机上的端口 3306127.0.0.1并使用用户名root。尽管您在远程主机上工作,但对于 MySQL 服务器,连接似乎来自localhost,因此必须相应地设置访问权限。
  4. SSH 端口转发/隧道是一个非常强大的工具。你绝对应该阅读更多关于它的信息。