解决CentOS下PHP连接数据库失败可按以下步骤排查:
检查数据库服务状态
使用命令 sudo systemctl status mysqld(或MariaDB)确认服务是否运行,未运行则启动:
sudo systemctl start mysqld。
验证数据库配置信息
检查PHP代码或配置文件(如/etc/php.ini、应用配置文件)中的数据库主机名、端口、用户名、密码是否正确。
localhost连接失败,可尝试替换为127.0.0.1或检查MySQL配置文件/etc/my.cnf中的bind-address是否允许远程连接。处理权限问题
确保数据库用户有足够权限,可通过MySQL命令行执行:
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;。
检查防火墙与网络
sudo firewall-cmd --permanent --add-port=3306/tcp && sudo firewall-cmd --reload。ping或telnet测试网络连通性。启用PHP扩展
确保php.ini中启用了数据库扩展(如mysqli或pdo_mysql),可通过php -m查看已加载模块,未启用则取消注释对应行并重启Web服务器。
查看错误日志
/var/log/mysql/error.log)和PHP错误日志(如/var/log/php_errors.log),获取具体错误信息。tail -f /var/log/php_errors.log实时查看错误日志。其他高级操作
sudo setenforce 0,若问题解决需调整策略。示例:快速测试连接
创建PHP测试脚本test_db.php:
<?php
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "test_db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>
通过浏览器访问该脚本,若显示“连接成功”则配置正确。
按以上步骤逐步排查,可定位并解决大部分连接问题。