CodeIgniter连接MySQL报错mysqli::real_connect(): (HY000/2002)求解决
解决CodeIgniter连接MySQL出现HY000/2002错误的方案
咱们一步步来解决这个数据库连接问题吧——我之前在XAMPP和CodeIgniter环境里也碰到过类似的情况,下面给你梳理几个可能的解决方向:
1. 确认MySQL服务是否正常运行
XAMPP的MySQL服务未启动或启动失败是最常见的原因:
- 打开XAMPP控制面板,查看MySQL模块的状态是否为Running
- 如果未运行,点击
Start按钮尝试启动;若启动失败,点击MySQL模块的Logs按钮查看错误日志,大概率是端口被其他程序(如独立安装的MySQL、WAMP、部分杀毒软件)占用了
2. 修改MySQL端口并更新CodeIgniter配置
如果默认3306端口被占用,需要修改端口并同步配置:
- 打开XAMPP安装目录下
mysql\bin\my.ini文件 - 找到
port=3306,将其修改为未被占用的端口(比如3307) - 重启XAMPP的MySQL服务
- 在CodeIgniter的数据库配置文件中,更新hostname为带端口的格式:
'hostname' => '127.0.0.1:3307',
3. 检查Windows防火墙/杀毒软件拦截
Windows防火墙或第三方杀毒软件可能会阻止PHP访问MySQL端口:
- 打开Windows Defender防火墙 → 允许应用通过防火墙
- 找到XAMPP的MySQL服务(或直接手动添加端口3306/你修改后的端口),确保勾选了私有网络权限(本地开发无需勾选公共网络)
- 临时关闭第三方杀毒软件,测试是否能正常连接
4. 验证数据库、用户名和密码的正确性
确保你的配置信息完全匹配:
- 登录phpMyAdmin,确认你配置中填写的
XXXXXX数据库确实存在 - 验证
root用户名和空密码是否正确(XAMPP默认root无密码,但如果之前修改过密码,需要同步更新配置) - 可以用命令行测试连接:
如果这里报错,说明数据库或账号信息有问题mysql -u root -p # 空密码直接回车,然后执行 use XXXXXX;
5. 排查CodeIgniter配置细节
- 临时将
db_debug设置为TRUE,获取更详细的错误信息:'db_debug' => TRUE, - 确认
dbdriver设置为mysqli,与你的PHP7.2.4环境匹配(该版本支持mysqli扩展)
6. 排除CodeIgniter框架问题
写一个简单的原生mysqli连接测试脚本,放在XAMPP的htdocs目录下,访问测试:
<?php $conn = mysqli_connect('127.0.0.1', 'root', '', 'XXXXXX'); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "Connected successfully"; ?>
- 如果这个脚本能成功连接,说明问题出在CodeIgniter的配置或框架本身;如果仍失败,问题则在MySQL服务或系统层面
内容的提问来源于stack exchange,提问作者Sreejil Veenakkad
相关产品推荐
相关产品推荐

