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

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

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

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

是的,使用SSH端口转发。

在本地机器上,发出命令

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

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

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

(更多信息与man ssh )。


编辑一些更多的解释作为您的意见的答案:

  1. 您将在您通常工作的本地机器上使用此命令,就在您要对数据库执行一些pipe理工作之前。 什么是通过SSH创build隧道,将所有到本地机器端口的stream量转发到另一台机器上的另一个端口。
  2. 在这种情况下,隧道在MySQL服务器上结束,您直接通过SSH联系。 部分[email protected]只是一个占位符,将其replace为shell帐户的用户名和Mysql服务器的IP地址或主机名。 但是从你的本地机器来说,这个机器确实不是localhost 。 这部分不是关于你的MySQL用户名,因为SSH不知道MySQL。
  3. 如果您在数据库上以root用户身份工作,则将您的MySQLpipe理工具连接到主机127.0.0.1上的端口3306,并使用用户名root 。 尽pipe您从远程主机上工作,但对于MysQL服务器,连接似乎来自localhost ,因此必须相应地设置访问权限。
  4. SSH端口转发/隧道是一个非常强大的工具。 你一定要读更多关于它。