PHP使用mysqli连接MySQL出现Error while reading greeting packet错误如何解决
报错核心原因
你混淆了Web服务端口和MySQL服务端口:mysqli构造函数的第6个参数是MySQL服务的监听端口,你传入的8080是本地Web服务(Apache/Nginx)的运行端口,该端口仅响应HTTP请求,无法识别MySQL连接协议。PHP向8080端口发送MySQL连接请求后始终无法收到合法的响应包,最终触发超时,出现你看到的三类报错。
解决步骤
- 修正数据库连接代码
MySQL默认监听端口为3306,如果你没有手动修改过MySQL端口配置,直接修改连接代码的端口参数即可,修正后代码如下:
<?php // 填写MySQL默认端口3306 $conn = new mysqli('localhost','root', '', 'votesystem','3306'); // 也可以直接省略端口参数,底层会默认使用3306 // $conn = new mysqli('localhost','root', '', 'votesystem'); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } ?>
- 若修改后仍报错,按以下顺序排查
- 打开XAMPP控制面板,确认MySQL服务处于正常运行状态
- 如果你手动修改过MySQL的监听端口,打开MySQL配置文件
my.ini,查找port参数对应的实际端口值,将上述代码中的端口替换为你实际配置的MySQL端口 - 确认
votesystem数据库已经提前创建完成,数据库名拼写没有错误
内容的提问来源于stack exchange,提问作者tanvi
相关产品推荐
相关产品推荐

