在 CentOS 系统上配置 LAMP(Linux, Apache, MySQL, PHP)环境后,PHP 连接数据库通常使用 MySQL 或 MariaDB。以下是详细的步骤指南,帮助你在 CentOS 上使用 PHP 连接到 MySQL 数据库。
首先,确保你已经安装了 Apache、MySQL(或 MariaDB)以及 PHP。如果尚未安装,可以使用以下命令进行安装:
# 更新系统软件包
sudo yum update -y
# 安装 Apache
sudo yum install -y httpd
# 启动并启用 Apache 服务
sudo systemctl start httpd
sudo systemctl enable httpd
# 安装 MySQL(CentOS 8 默认使用 MariaDB)
sudo yum install -y mariadb-server mariadb
# 启动并启用 MariaDB 服务
sudo systemctl start mariadb
sudo systemctl enable mariadb
# 运行安全设置脚本,配置 root 密码和其他安全选项
sudo mysql_secure_installation
# 安装 PHP 及相关模块
sudo yum install -y php php-mysqlnd php-pdo php-gd php-mbstring php-xml
# 重启 Apache 以加载 PHP 模块
sudo systemctl restart httpd
确保 MariaDB/Mysql 允许远程连接,并创建一个用于 PHP 连接的数据库和用户。
# 登录到 MySQL/MariaDB
sudo mysql -u root -p
# 创建一个新的数据库(例如:mydatabase)
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 创建一个新用户并授权(例如:user@localhost)
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
# 授予用户对数据库的权限
GRANT ALL PRIVILEGES ON mydatabase.* TO 'user'@'localhost';
# 刷新权限
FLUSH PRIVILEGES;
# 退出 MySQL/MariaDB
EXIT;
注意:将 'user'
和 'password'
替换为你自己的用户名和密码。如果需要从远程主机连接,请将 'localhost'
替换为相应的 IP 地址或 '%'
(允许任何主机)。
在你的 web 根目录(通常是 /var/www/html
)下创建一个 PHP 文件,例如 connect.php
,并添加以下内容:
<?php
// 数据库配置
$servername = "localhost"; // 数据库主机地址
$username = "user"; // 数据库用户名
$password = "password"; // 数据库密码
$dbname = "mydatabase"; // 数据库名称
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>
确保将 $servername
、$username
、$password
和 $dbname
替换为你实际的数据库配置。
将 connect.php
文件上传到你的 web 服务器目录(例如 /var/www/html/
),然后在浏览器中访问 http://your_server_ip/connect.php
。
sudo systemctl status mariadb
防火墙设置:确保防火墙允许 Web 服务器的流量。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
SELinux 设置:如果启用了 SELinux,可能需要调整相关策略以允许 PHP 连接数据库。
sudo setsebool -P httpd_can_network_connect_db 1
MySQL/MariaDB 绑定地址:编辑 MySQL/MariaDB 配置文件(通常位于 /etc/my.cnf
或 /etc/mysql/my.cnf
),确保 bind-address
设置正确。
[mysqld]
bind-address = 0.0.0.0 # 允许所有 IP 连接,生产环境建议指定具体 IP
修改后,重启 MySQL/MariaDB 服务:
sudo systemctl restart mariadb
PDO(PHP Data Objects)提供了一个数据访问抽象层,支持多种数据库。以下是使用 PDO 连接 MySQL 的示例:
<?php
// 数据库配置
$servername = "localhost";
$username = "user";
$password = "password";
$dbname = "mydatabase";
try {
// 创建 PDO 实例
$conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8mb4", $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "连接成功";
} catch(PDOException $e) {
die("连接失败: " . $e->getMessage());
}
?>
优点:
通过以上步骤,你应该能够在 CentOS 的 LAMP 环境下成功配置 PHP 连接到 MySQL 数据库。如果在过程中遇到问题,请仔细检查每一步的配置,并参考相关日志文件(如 Apache 的 error_log
和 MySQL 的 error.log
)进行排查。
如果你有更多问题或需要进一步的帮助,请随时提问!