在CentOS系统下配置PHP访问MySQL是许多Web开发场景中的常见需求,这一过程涉及环境准备、软件安装、配置调整以及功能测试等多个环节,本文将详细介绍在CentOS系统中实现PHP与MySQL通信的完整步骤,确保读者能够清晰理解并顺利操作。

系统环境准备
在开始配置之前,需要确保CentOS系统已满足基本要求,推荐使用CentOS 7或更高版本,因为这两个版本对PHP 7.x和MySQL 5.7/8.0的支持更为完善,首先更新系统软件包列表,确保所有软件包都是最新版本,执行sudo yum update -y命令可以完成系统更新,建议关闭SELinux或将其设置为宽松模式,以避免权限问题影响服务运行,可以通过sudo setenforce 0临时关闭SELinux,或修改/etc/selinux/config文件将SELINUX参数设置为permissive。
安装MySQL数据库
MySQL是PHP需要连接的目标数据库,在CentOS系统中,可以通过MySQL官方Yum仓库安装最新版本的MySQL,首先下载并添加MySQL官方Yum仓库配置文件,执行sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm -y命令,安装完成后,使用sudo yum install mysql-community-server -y命令安装MySQL服务器,启动MySQL服务并设置开机自启,可通过sudo systemctl start mysqld和sudo systemctl enable mysqld实现,首次启动后,需要运行sudo mysql_secure_installation脚本进行安全配置,包括设置root密码、移除匿名用户等操作。
安装PHP及MySQL扩展
PHP作为服务器端脚本语言,需要安装相应的MySQL扩展才能与数据库通信,CentOS系统中,可以通过Remi仓库获取最新版本的PHP,首先安装EPEL仓库和Remi仓库,执行sudo yum install epel-release -y和sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y,然后使用sudo yum --enablerepo=remi-php74 install php php-mysqlnd php-mysqli php-pdo php-mbstring -y命令安装PHP 7.4及其MySQL相关扩展。php-mysqlnd是MySQL原生驱动,而php-mysqli提供了MySQLi扩展接口,php-pdo则支持PDO数据库抽象层。
配置PHP与MySQL连接
安装完成后,需要确保PHP配置正确以支持MySQL连接,检查/etc/php.ini文件中的extension_dir参数是否指向正确的扩展目录路径,通常为/usr/lib64/php/modules/,确保以下扩展已被启用,即去掉行首的分号:extension=mysqli、extension=pdo_mysql,保存文件后,重启PHP-FPM服务使配置生效,执行sudo systemctl restart php-fpm,如果使用Apache作为Web服务器,还需重启Apache服务:sudo systemctl restart httpd。
创建测试数据库和用户
为了验证PHP与MySQL的连接,需要创建一个测试数据库和具有相应权限的用户,登录MySQL命令行:mysql -u root -p,输入root密码后执行以下SQL语句:

CREATE DATABASE test_db; CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'password123'; GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'localhost'; FLUSH PRIVILEGES;
这些命令创建了一个名为test_db的数据库,以及一个拥有该数据库所有权限的用户test_user,密码为password123。
编写PHP测试脚本
在Web服务器的根目录(如/var/www/html/)下创建一个PHP测试文件,例如test_mysql.php如下:
<?php
$servername = "localhost";
$username = "test_user";
$password = "password123";
$dbname = "test_db";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功!";
$conn->close();
?> 保存文件后,通过浏览器访问http://your_server_ip/test_mysql.php,如果显示”连接成功!”,则表示PHP与MySQL的连接配置正确。
常见问题排查
在配置过程中可能会遇到一些问题,如果出现”Access denied”错误,可能是用户权限设置不正确,需检查MySQL中用户的主机权限和密码是否正确,如果显示”Call to undefined function mysqli_connect()”,则说明PHP的mysqli扩展未正确加载,需检查php.ini文件并重启PHP服务,确保防火墙允许3306端口的访问,可通过sudo firewall-cmd --permanent --add-port=3306/tcp和sudo firewall-cmd --reload命令开放端口。
安全建议
在生产环境中,需要采取额外的安全措施,避免使用root用户连接PHP应用,应创建具有最小权限的专用数据库用户,启用MySQL的SSL加密功能以保护数据传输安全,定期更新PHP和MySQL到最新版本,修补已知的安全漏洞,对于敏感信息如数据库密码,应存储在环境变量或配置文件中,而非直接写在PHP代码里。

相关问答FAQs
问题1:如何在CentOS上检查PHP是否已正确安装MySQL扩展?
解答:可以通过执行php -m | grep -i mysql命令来查看PHP已安装的模块列表,如果输出包含mysqli和pdo_mysql,则表示MySQL扩展已正确安装,也可以创建一个PHP文件,使用phpinfo()函数查看详细的配置信息,在浏览器中访问该文件并搜索”MySQL”相关内容。
问题2:PHP连接MySQL时出现”Can’t connect to MySQL server on ‘localhost'”错误怎么办?
解答:此错误通常由以下原因导致:1. MySQL服务未启动,可通过sudo systemctl status mysqld检查并使用sudo systemctl start mysqld启动;2. MySQL监听地址配置错误,检查/etc/my.cnf文件中的bind-address参数是否设置为0.0.1或0.0.0;3. 防火墙阻止了3306端口,需使用sudo firewall-cmd --list-ports确认端口是否开放,未开放则执行sudo firewall-cmd --permanent --add-port=3306/tcp并重载防火墙。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复