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

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

众所周知,保持 MySQL 端口 3306 开放是不安全的。但是,我想使用一个好的 MySQL 管理程序来代替 phpMyAdmin,因为 phpMyAdmin 需要 3306 端口开放。

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

有没有更好的方法既能保证 MySQL 安全又能使用远程连接?

答案1

是的,使用 SSH 端口转发。

在本地机器上发出命令

ssh -L 3306:127.0.0.1:3306 [email protected]

然后,您可以将本地 MySQL 管理工具连接到本地计算机上的端口 3306。不过,您必须考虑到,对于 MySQL,连接似乎也来自该端口127.0.0.1,因此必须相应地设置 MySQL 用户的访问权限。

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

(更多信息请参见man ssh)。


编辑为了回答您的评论,下面提供一些其他解释:

  1. 在您想要对数据库进行一些管理工作之前,您将在通常工作的本地计算机上使用此命令。它的作用是通过 SSH 创建一个隧道,将发往本地计算机端口的所有流量转发到另一台计算机的另一个端口。
  2. 在这种情况下,隧道终止于 MySQL 服务器,您可以通过 SSH 直接联系该服务器。该部分[email protected]只是一个占位符,请将其替换为您的 shell 帐户的用户名和 MysQL 服务器的 IP 地址或主机名。但从您的本地计算机来看,这绝对不是localhost。这部分与您的 MySQL 用户名无关,因为 SSH 不了解 MySQL。
  3. 如果您以 root 身份操作数据库,则需要将 MySQL 管理工具连接到主机上的端口 3306 127.0.0.1,并使用用户名root。尽管您是在远程主机上工作,但对于 MysQL 服务器来说,连接似乎来自localhost,因此必须相应地设置访问权限。
  4. SSH 端口转发/隧道是一个非常强大的工具。你绝对应该阅读更多关于它的内容。

相关内容