![Wordpress 和 MySQL 位于同一个 EC2 实例上,不同的子网。一个是公网,一个是私网](https://linux22.com/image/794185/Wordpress%20%E5%92%8C%20MySQL%20%E4%BD%8D%E4%BA%8E%E5%90%8C%E4%B8%80%E4%B8%AA%20EC2%20%E5%AE%9E%E4%BE%8B%E4%B8%8A%EF%BC%8C%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%90%E7%BD%91%E3%80%82%E4%B8%80%E4%B8%AA%E6%98%AF%E5%85%AC%E7%BD%91%EF%BC%8C%E4%B8%80%E4%B8%AA%E6%98%AF%E7%A7%81%E7%BD%91.png)
我的目标是在同一个 VPC 上建立一个包含 WordPress 及其 MySQL 数据库的 EC2 实例,并在公共子网上提供 WordPress,在私有子网上提供 MySQL。目的是减少 MySQL 对公共流量的暴露,而无需将其放在单独的 EC2 实例上。
为了实现此目的,我在公共子网中启动了一个 EC2 实例,并为私有子网附加了一个网络接口。然后,我安装了 WordPress 和 MySQL,默认情况下它们安装在公共子网上。
我不清楚的是如何将 MySQL 放在私有子网上并让 WordPress 可以访问。我尝试将地址绑定到私有子网内的 IP。但是,每当我这样做时,WordPress 都无法访问。如果我将绑定切换到我的实例的 IP 地址,WordPress 就可以正常工作。
答案1
一段时间以来,实际上很长一段时间... MySQL 只在本地主机上监听。我听说,这甚至是一些云系统操作员考试的一个目标?几乎每个托管运营商都在自己的常见问题解答中提到了这一点,因为它太常见了。
https://www.google.com/search?q=allow+mysql+remote+connection&newwindow=1
您需要编辑 mysqld 配置文件,名称和位置可能有所不同...可能是 my.cnf 或 mysqld.cnf??? 无论如何,找到“bind-address”配置变量并修改它。此外,您还需要修改授权,因为大多数授权最初都是为允许 user@localhost 而创建的。修改授权和刷新权限后,您必须允许流量通过防火墙。几乎任何安装都可能有一个,无论是本地还是云。确保您允许来自特定 IP 的 tcp/3306 或全局允许任何人(如果您有死亡愿望或喜欢乘坐 737MAX 的靠窗座位)
那么,总结一下...
- 修改配置
- 授予/特权
- 在防火墙上戳漏洞
测试并验证您所做的事情是否有效,记录您所做的事情、原因、票号以及所有这些...
答案2
您可以让 WordPress 使用 nginx 或 apache 运行,并配置这些 Web 服务器仅在公共 subne5/ip 上为 WordPress 站点提供服务。
您可以拒绝使用安全组来拒绝 MySQL 从 Internet 访问,并允许从 Web 服务器本地访问 mysql/mariadb。
但从安全和架构的角度来看,它并不理想。
您可以让 mysql 监听特定的 ip,并且您的操作系统网络配置需要有该 ip。