这很奇怪,我有一个 AWS EC2 实例设置,我试图在其中安装 Wordpress 并使用 RDS 作为数据库。我可以使用 mysql 客户端从实例顺利连接到数据库,并且凭据可以与 RDS 端点一起使用。
我为 RDS 设置了一个安全组,它只接受来自实例 ip 的端口 3306 连接,并且我可以从实例正常地 telnet 到它,但是不能从我的本地机器上正常访问它,所以我知道 DB 安全组运行良好。
EC2 实例有一个安全组,允许端口 80、22、443 和 3306 进出,所以这也应该没问题。
但是,在设置数据库的 WP 安装步骤中,它每次都不会接受凭据,并返回“建立数据库连接时出错”。我尝试将详细信息添加到 wp-config.php,但它抱怨说需要 wp-config-sample.php 才能继续该过程。
Wordpress 目录和文件均归实例中的 apache 所有,并且目录和文件的权限为 755/644。
答案1
经过一番 Google 搜索和询问后,我被建议检查 SELinux 设置,并在运行以下命令后发现问题:
sudo tail -100 /var/log/audit/audit.log | audit2why
返回如下内容:
type=AVC msg=audit(1525088932.314:74428): avc: denied { name_connect } for pid=14435 comm="httpd" dest=3306 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket
Was caused by:
One of the following booleans was set incorrectly.
Description:
Allow httpd to can network connect
Allow access by executing:
# setsebool -P httpd_can_network_connect 1
Description:
Allow httpd to can network connect db
Allow access by executing:
# setsebool -P httpd_can_network_connect_db 1
运行建议的命令后,我就可以继续安装,但我必须遵循一些进一步的 Wordpress 说明并手动创建 wp-config.php 文件。
这优秀的帖子对我帮助很大。