在 CentOS 上连接 PHP 数据库,通常指的是 PHP 连接 MySQL / MariaDB,下面按常见场景一步步说明(以 CentOS 7/8 + PHP + MySQL/MariaDB 为例)。
cat /etc/centos-release
php -v
yum install -y mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
dnf install -y mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
yum install -y php php-cli
yum install -y php-mysqlnd
dnf install -y php-mysqlnd
systemctl restart httpd # Apache
# 或
systemctl restart nginx # Nginx(需配合 php-fpm)
mysql -u root -p
CREATE DATABASE testdb;
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
<?php
$host = "localhost";
$user = "testuser";
$password = "password";
$database = "testdb";
$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "数据库连接成功";
$conn->close();
?>
<?php
try {
$dsn = "mysql:host=localhost;dbname=testdb;charset=utf8mb4";
$pdo = new PDO($dsn, "testuser", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "数据库连接成功";
} catch (PDOException $e) {
echo "连接失败: " . $e->getMessage();
}
?>
tail -f /var/log/httpd/error_log
Class 'mysqli' not foundphp -m | grep mysql
没输出说明扩展没装。
setenforce 0 # 测试用
或允许 HTTP 访问数据库:
setsebool -P httpd_can_network_connect_db 1
✅ 核心步骤:
php-mysqlndmysqli 或 PDO 连接如果你用的是 CentOS 版本 / PHP 版本 / 数据库类型 不同,可以告诉我,我可以给你精确命令。