温馨提示×

如何解决CentOS PHP连接数据库失败

小樊
59
2025-09-09 17:04:50
栏目: 编程语言

解决CentOS下PHP连接数据库失败可按以下步骤排查:

  1. 检查数据库服务状态
    使用命令 sudo systemctl status mysqld(或MariaDB)确认服务是否运行,未运行则启动:
    sudo systemctl start mysqld

  2. 验证数据库配置信息
    检查PHP代码或配置文件(如/etc/php.ini、应用配置文件)中的数据库主机名、端口、用户名、密码是否正确。

    • 若使用localhost连接失败,可尝试替换为127.0.0.1或检查MySQL配置文件/etc/my.cnf中的bind-address是否允许远程连接。
  3. 处理权限问题
    确保数据库用户有足够权限,可通过MySQL命令行执行:
    GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;

  4. 检查防火墙与网络

    • 开放数据库端口(默认3306):
      sudo firewall-cmd --permanent --add-port=3306/tcp && sudo firewall-cmd --reload
    • 若为远程连接,使用pingtelnet测试网络连通性。
  5. 启用PHP扩展
    确保php.ini中启用了数据库扩展(如mysqlipdo_mysql),可通过php -m查看已加载模块,未启用则取消注释对应行并重启Web服务器。

  6. 查看错误日志

    • 检查MySQL错误日志(通常位于/var/log/mysql/error.log)和PHP错误日志(如/var/log/php_errors.log),获取具体错误信息。
    • 通过tail -f /var/log/php_errors.log实时查看错误日志。
  7. 其他高级操作

    • 若使用SELinux,可临时禁用测试:sudo setenforce 0,若问题解决需调整策略。
    • 确保PHP版本与数据库驱动兼容,必要时更新软件包。

示例:快速测试连接
创建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 "连接成功";
?>

通过浏览器访问该脚本,若显示“连接成功”则配置正确。

按以上步骤逐步排查,可定位并解决大部分连接问题。

0