PHP mysqli数据库连接报错:目标机器主动拒绝连接求助
排查MySQL连接失败:目标机器主动拒绝连接
问题代码
<?php $connection = mysqli_connect("localhost", "root", ""); $db = mysqli_select_db($connection, 'bfp_drrm'); $query = "SELECT * FROM initial"; $query_run = mysqli_query($connection, $query); ?>
报错信息
"Fatal error: Uncaught mysqli_sql_exception: No connection could be made because the target machine actively refused it in C:\xampp\htdocs\BFP_READY_F\Regional\realtime.php:273 Stack trace: #0 C:\xampp\htdocs\BFP_READY_F\Regional\realtime.php(273): mysqli_connect('localhost', 'root', '') #1 {main} thrown in.."
排查与解决步骤
1. 先确认MySQL服务有没有启动
打开XAMPP控制面板,查看MySQL模块的状态:
- 若显示"Stopped",直接点击"Start"启动服务
- 启动失败的话,点击MySQL模块的"Logs"按钮查看日志,大概率是端口被占用或配置出错
2. 核对连接参数
- 主机和端口:如果MySQL未监听localhost/127.0.0.1,或修改了默认的3306端口,需要在
mysqli_connect中补充端口参数,示例:$connection = mysqli_connect("localhost", "root", "", "", 3307); // 3307为自定义端口 - 账号密码:XAMPP默认root密码为空,但如果之前修改过密码,必须填写修改后的密码,不能再用空字符串
3. 检查3306端口是否被占用
MySQL默认使用3306端口,容易被其他程序(如另一个MySQL实例、SQL Server)占用:
- 打开命令提示符,执行以下命令:
netstat -ano | findstr :3306 - 若有结果,记下后方的PID,打开任务管理器找到对应进程并关闭,再重启MySQL服务
4. 检查MySQL配置文件
找到XAMPP安装目录下的mysql\bin\my.ini文件:
- 查看
bind-address是否设置为127.0.0.1或0.0.0.0(允许本地连接) - 确认
port为你使用的端口号(默认3306)
修改后记得重启MySQL服务
5. 用phpMyAdmin验证服务状态
在XAMPP控制面板点击MySQL的"Admin"按钮:
- 能正常打开phpMyAdmin,说明MySQL服务运行正常,问题出在代码参数或权限
- 无法打开的话,优先解决MySQL服务启动问题
6. 给代码添加错误提示(方便定位)
原代码缺少错误处理逻辑,添加后可直接获取具体报错信息:
<?php $connection = mysqli_connect("localhost", "root", ""); if (!$connection) { die("连接失败: " . mysqli_connect_error()); } $db = mysqli_select_db($connection, 'bfp_drrm'); if (!$db) { die("选择数据库失败: " . mysqli_error($connection)); } $query = "SELECT * FROM initial"; $query_run = mysqli_query($connection, $query); if (!$query_run) { die("查询失败: " . mysqli_error($connection)); } ?>
内容的提问来源于stack exchange,提问作者alez_nalimaj
相关产品推荐
相关产品推荐

