
本文详解 CodeIgniter 3 在 Windows 11 环境下因数据库配置错误导致“目标机器主动拒绝连接”(HY000/2002)错误的排查与修复方法,重点聚焦 database.php 配置项校验与常见陷阱。
本文详解 codeigniter 3 在 windows 11 环境下因数据库配置错误导致“目标机器主动拒绝连接”(hy000/2002)错误的排查与修复方法,重点聚焦 `database.php` 配置项校验与常见陷阱。
当在 Windows 11 上运行 XAMPP + CodeIgniter 3 项目时,出现如下典型错误:
Message: mysqli::real_connect(): (HY000/2002): No connection could be made because the target machine actively refused it. Filename: system/database/drivers/mysqli/mysqli_driver.php
该错误并非 MySQL 服务未启动或端口被占用的底层网络问题,而几乎总是源于 CodeIgniter 的数据库配置文件 application/config/database.php 中连接参数与本地环境不匹配。
✅ 关键检查项(按优先级排序)
请逐项核对 application/config/database.php 中的 $db['default'] 配置数组:
$db['default'] = array(
'dsn' => '',
'hostname' => '127.0.0.1', // ✅ 推荐用 127.0.0.1(非 'localhost')
'username' => 'root',
'password' => '', // 注意:XAMPP 默认密码为空,非 'root'
'database' => 'elitenelegant',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);? 重点验证:
-
hostname:Windows 11 下localhost可能触发 IPv6 解析延迟或失败,强制改为127.0.0.1可绕过 DNS 解析,显著提升连接稳定性; -
password:XAMPP 默认 MySQL 用户root密码为空字符串'',切勿填写'root'或留空不删引号(如''是正确写法); -
database:确认数据库名elitenelegant已通过 phpMyAdmin 成功创建,且拼写完全一致(区分大小写在部分配置下生效); - MySQL 服务状态:务必在 XAMPP Control Panel 中确认 MySQL 模块已启动(绿色 Running 状态);
⚠️ 常见误区与补充建议
- ❌ 不要修改
system/database/DB_driver.php或mysqli_driver.php—— 这些是核心框架文件,错误根源在应用层配置; - ✅ 启用调试:临时将
'db_debug' => TRUE,可获取更明确的连接上下文提示; - ✅ 端口验证:若 XAMPP 自定义了 MySQL 端口(如
3307),需在hostname后追加端口:'127.0.0.1:3307'; - ✅ 权限检查:确保 MySQL 用户
root具有从127.0.0.1(而非仅localhost)访问目标数据库的权限(可通过 phpMyAdmin → 用户账户调整)。
完成配置修正后,务必清除浏览器缓存并硬刷新页面(Ctrl+F5),避免因旧会话或缓存掩盖修复效果。
? 总结:95% 的
HY000/2002错误源于database.php中hostname、password或服务状态三者之一失配。坚持“先查配置、再查服务、最后查网络”的排查顺序,可快速定位并解决 CodeIgniter 3 的数据库连接阻塞问题。


















