使用PHP内置服务器时mysqli连接数据库报getaddrinfo failed错误怎么办
报错原因
- 核心错误是
mysqli_connect的第一个参数配置错误:该参数需要填写MySQL数据库服务的监听地址,你错误填入了PHP内置Web服务器的地址,还加上了http://协议前缀和Web服务的8000端口,MySQL客户端无法识别带HTTP协议前缀的地址,也不会去8000端口请求数据库服务,因此触发域名解析失败的报错。 - 附加排查点:若修改地址后仍连接失败,可检查本地MySQL服务是否正常启动,以及数据库账号密码、权限配置是否正确。
解决步骤
- 修改数据库连接地址配置,删除
http://前缀和8000端口,默认本地MySQL服务监听127.0.0.1的3306端口,直接填写127.0.0.1即可:
// 修改前 $servername="http://127.0.0.1:8000"; // 修改后 $servername="127.0.0.1";
- 确认本地MySQL服务处于运行状态:
- Windows系统可在「服务」列表中查找MySQL相关服务,确认状态为已启动
- macOS/Linux系统可执行
ps aux | grep mysql命令,查看是否有MySQL进程在运行
- 确认数据库连接信息匹配:你当前代码中密码参数传入的是空字符串,需确认本地root用户是否允许空密码登录,以及root账号拥有
student数据库的访问权限。 - 建议在连接失败时输出官方错误提示,方便后续排查问题,修正后的完整代码参考:
<?php $servername = "127.0.0.1"; $uname = "root"; // 填写MySQL root用户的实际密码,无密码则保留空字符串 $password = ""; $dbname = "student"; if(mysqli_connect($servername, $uname, $password, $dbname)) { echo "db connected"; } else { echo "not connected,错误信息:" . mysqli_connect_error(); } ?>
内容的提问来源于stack exchange,提问作者sahil soni
相关产品推荐
相关产品推荐

