1. 环境准备
1.1 选择操作系统与版本
在确定开发环境时,操作系统与 PHP版本 等因素影响兼容性。选择时应考虑长期维护与安全更新,确保与 MariaDB 的版本搭配稳定。
此外,安装包来源也会影响系统稳定性。建议优先使用官方仓库或受信任的长期维护源,以降低潜在的依赖冲突风险。
# Ubuntu/Debian 示例
sudo apt update
sudo apt install -y php php-mysql mariadb-server
1.2 验证系统组件及网络环境
确认 Web 服务器、PHP 与 MariaDB 服务处于运行状态,并确保 本机/局域网 能够访问 MariaDB 的 3306 端口。
通过简单命令检查服务状态,可以在后续步骤中快速定位问题,网络连通性是连接测试的前置条件。
sudo systemctl status mariadb
sudo systemctl status apache2 # 如使用 Apache
# 如使用 Nginx,请检查 nginx 服务
ss -tulpen | grep 3306
2. MariaDB安装与配置
2.1 安装MariaDB
通过系统包管理器安装 MariaDB,版本和依赖需要确认与当前 PHP 版本的兼容性,以避免后续连接问题。
安装完成后,执行 mysql_secure_installation 提升数据库的默认安全性,包括设置 root 口令、删除匿名用户、禁用远程 root 登录等。
sudo apt update
sudo apt install mariadb-server
sudo systemctl enable --now mariadb
sudo mysql_secure_installation
2.2 创建测试数据库与账户
登录 MariaDB 后,应 创建测试数据库与应用账户,并严格赋予所需权限以实现最小特权原则。
以下示例演示如何创建数据库、账户并授权,确保 testdb 及对应账户具备所需权限。
CREATE DATABASE testdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'dbpass';
GRANT ALL PRIVILEGES ON testdb.* TO 'dbuser'@'localhost';
FLUSH PRIVILEGES;
3. PHP环境配置
3.1 安装PHP及必需扩展
确保 PHP 版本 与 MariaDB 扩展 兼容,常用扩展包括 pdo_mysql 与 mysqli,它们分别支持 PDO 与 MySQLi 的连接方式。
在绝大多数 Linux 发行版上,可以通过包管理器安装 PHP 及 MySQL/MariaDB 相关扩展,随后用 php -m 验证已加载的模块。
sudo apt install php php-mysql
php -m | grep -E 'pdo_mysql|mysqli'
3.2 配置文件与扩展加载
检查 php.ini 是否启用必要的扩展,并确保 extension=mysqli 与 extension=pdo_mysql 已启用,以便 PHP 能连接 MariaDB。
不同环境的 p h p.ini 路径不同,通常在 /etc/php/版本号/apache2/php.ini 或 /etc/php/版本号/cli/php.ini 下进行修改。
# 示例:启用扩展
# 打开相应文件,取消以下两行的注释
extension=mysqli
extension=pdo_mysql
4. PHP连接MariaDB的两种方式
4.1 使用 MySQLi(过程化风格)
MySQLi 提供了过程化和面向对象两种风格,过程化风格简单直观,适合快速示例与小型脚本。
在生产环境中,确保在成功连接后进行数据处理前的错误检查,连接失败信息仅在调试阶段输出,正式环境应记录日志。
4.2 使用 PDO(面向对象风格)
PDO 提供了统一的数据库访问接口,支持多数据库,推荐用于新项目以便日后切换数据库实现。
通过异常处理机制来捕获连接错误,确保应用对数据库不可用的情况有明确的处理路径。
PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];try {$pdo = new PDO($dsn, $user, $pass, $options);echo '连接成功';
} catch (PDOException $e) {die('连接失败: ' . $e->getMessage());
}
?> 5. 配置文件与安全性
5.1 php.ini 配置
在生产环境中,应<禁用显示错误,并开启错误日志,确保 error_reporting 不暴露敏感信息;同时设置时区与字符集以避免编码问题。
通过适当的日志配置,可以在不影响用户体验的情况下,记录数据库连接与执行过程中的异常。
# 示例:在 php.ini 中
display_errors = Off
log_errors = On
error_log = /var/log/php-errors.log
date.timezone = "UTC"
default_charset = "utf-8"
5.2 数据库账户权限与最小特权
数据库账户应具备最小权限,仅赋予 testdb 的必要权限,避免使用 root 账户在应用中连接,以降低被滥用的风险。
GRANT SELECT, INSERT, UPDATE, DELETE ON testdb.* TO 'dbuser'@'localhost';
FLUSH PRIVILEGES;
6. 连接测试与排错
6.1 编写简单的连接测试脚本
通过一个独立的测试脚本来验证连接是否成功,先把主机、端口、用户名和数据库名替换为你的环境,确保测试脚本能正确访问数据库。
测试脚本不仅帮助确认连接,还能作为后续集成测试的基线,方便快速定位问题区域。
getMessage());
}
?> 6.2 常见错误及排错要点
常见错误包括 1045 访问被拒绝、2002 Can't connect to local MySQL server、以及主机名解析问题。要点是确认 服务状态、端口、以及 防火墙设置是否正确。

sudo systemctl status mariadb
sudo systemctl status apache2 # 如使用 Apache
# 如使用 Nginx,请检查 nginx 服务
ss -tulpen | grep 3306


