一位名人曾说过“安全是一个过程,而不是一个产品 https://www.schneier.com/crypto-gram/archives/2000/0515.html."
因此,您有一个数据库服务器,它应该只侦听另一台服务器的数据库连接,并且您拥有该另一台服务器的特定 IP。您可以设置多层限制来实现此目的
1)防火墙
如果您的 MySQL 服务器足够幸运,位于防火墙后面,则您应该能够默认阻止所有连接,并仅允许某些端口上的某些连接。我不确定您如何设置数据库服务器,或者是否other想要访问它的服务器是否在同一个 LAN 上,或者两台机器是否只是虚拟机。这完全取决于您的服务器运行的位置以及您拥有哪种防火墙(如果有)。
我经常在 Amazon Web Services 上设置服务器。他们提供安全组,允许您默认阻止所有端口,然后允许访问特定端口 from 特定IP块使用 CIDR 表示法。即,您以端口/IP 组合对的形式授予访问权限。为了让您的一台服务器通过,您可以允许端口 3000 访问 IP 地址 101.432.xx.xx。
详细信息将根据您的架构和服务提供商而有所不同。
2) IP表
Linux 机器可以运行称为 iptables 的本地防火墙(即在每台服务器本身上运行的进程)。这是一些强大的东西,很容易把你自己锁在外面。有一个简短的帖子这里就这样 https://stackoverflow.com/questions/22309726/restricting-mysql-3306-port-with-iptables但你必须小心。使用 IPtables 可以轻松地将自己锁定在服务器之外。请记住,您需要允许所有服务器访问端口 22,以便可以登录到它们。如果您无法连接端口 22,您将永远无法再次使用 ssh 登录。在修改 iptables 之前,我总是尝试拍摄机器的快照,以免永久锁定自己。
有一点信息here https://www.a2hosting.com/kb/developer-corner/mysql/restricting-mysql-port-access也有关于 iptables 和 MySQL 的。
3)MySQL cnf文件
MySQL 有一些配置选项可以将任何数据库连接限制为仅限本地主机 - 即,您可以阻止任何远程计算机连接。我暂时不知道这些选项是否可以通过 IP 地址限制远程计算机,但值得一看。
4)MySQL通过GRANT等进行访问控制。
MySQL 允许您非常细粒度的控制 http://dev.mysql.com/doc/refman/5.7/en/connection-access.html谁可以访问您系统中的内容。理想情况下,您仅在需要了解的基础上授予对信息或功能的访问权限。实际上,这可能会很麻烦,但如果您想要安全性,您就会付出更多努力。
回答您的问题:
1) 是的,您绝对应该尝试限制对数据库服务器的 MySQL 端口 3000 以及用于通过 SSH 连接的端口 22 的访问。
2) 除了上面提到的之外,您将 PHPMyAdmin 限制为仅您的 IP 地址听起来非常聪明 --但请确保您不会意外地将自己锁在门外。我还强烈建议您禁用 ssh 连接的密码访问,强制使用密钥对。您可以找到谷歌上有很多例子 https://www.google.com/#q=ssh+turn+off+password+auth%2C+force+key+pairs.