当你在 CentOS 上的 PHP 应用程序中遇到数据库连接失败的问题时,可以按照以下步骤进行排查和解决:
确认数据库服务是否正在运行: 使用以下命令检查 MySQL 或 MariaDB 服务的状态:
sudo systemctl status mysqld
或者
sudo systemctl status mariadb
如果服务没有运行,请使用以下命令启动它:
sudo systemctl start mysqld
或者
sudo systemctl start mariadb
检查数据库连接配置:
确保 PHP 应用程序中的数据库连接配置(如主机名、端口、用户名、密码和数据库名)是正确的。这些配置通常存储在配置文件(如 config.php
或 .env
文件)中。
检查防火墙设置: 如果你的应用程序和数据库服务器位于不同的服务器上,请确保防火墙允许数据库连接。例如,如果使用的是 MySQL,默认端口是 3306。你可以使用以下命令打开此端口:
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
检查 SELinux 设置: 如果 SELinux 已启用并阻止了数据库连接,你可以尝试临时禁用 SELinux 以进行测试:
sudo setenforce 0
如果这解决了问题,你可以考虑调整 SELinux 策略以允许数据库连接,或者将其设置为 permissive 模式(不推荐):
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
查看 PHP 和数据库日志:
检查 PHP 应用程序的错误日志以及数据库服务器的日志(如 MySQL 的 /var/log/mysqld.log
),以获取更多关于连接失败的详细信息。
检查 PHP 数据库扩展:
确保已安装并启用了与你的数据库相对应的 PHP 扩展(如 mysqli
或 PDO_MySQL
)。
通过以上步骤,你应该能够找到并解决 CentOS 上 PHP 数据库连接失败的问题。如果问题仍然存在,请提供更多详细信息以便进一步排查。