PHP连接MySQL失败主因是服务未运行、权限不匹配或mysqli扩展未启用,需依次检查MySQL状态、端口监听、用户主机匹配及PHP扩展配置。
绝大多数连接失败,不是代码写错了,而是 mysqli_connect() 根本没连上 MySQL 服务。先确认 MySQL 进程是否在运行、端口是否被监听、防火墙是否放行。
systemctl status mysql(或 mariadb)看服务状态;macOS 用 brew services list | grep mysql
netstat -tuln | grep :3306 或 lsof -i :3306,若无输出,说明 MySQL 没监听 3306mysql -h 127.0.0.1 -P 3306 -u root -p,能进命令行才说明服务可用host 不能写 localhost,得用 host.docker.i
nternal(Mac/Win)或容器名(同网络下)用户名密码对不上只是表象,本质是 MySQL 认证用户和来源主机不匹配。MySQL 的用户是 'user'@'host' 二元组,'root'@'localhost' 和 'root'@'127.0.0.1' 是两个不同账号。
SELECT User, Host FROM mysql.user;看是否存在你代码里用的
user + 实际连接时解析出的 host
mysqli_connect('localhost', ...),PHP 默认走 Unix socket(等价于 'user'@'localhost');改用 '127.0.0.1' 强制走 TCP,对应 'user'@'127.0.0.1'
CREATE USER 'xxx'@'%' IDENTIFIED BY 'pwd'; 并 GRANT ... ON *.* TO 'xxx'@'%';,再 FLUSH PRIVILEGES;
这不是 MySQL 配置问题,是 PHP 编译时没启用 mysqli 扩展,或者扩展没加载。
php -m | grep mysqli,无输出说明扩展未启用php.ini 中是否包含 extension=mysqli(Linux/macOS 通常为 extension=mysqli.so,Windows 为 extension=php_mysqli.dll)php.ini 可能不同:用 php --ini 查 CLI 路径,phpinfo(); 查 Apache/Nginx 加载的配置php-mysql 包,需 sudo apt install php-mysql
这通常不是连接阶段失败,而是连接后空闲太久被 MySQL 主动断开,或查询超长导致 packet 被截断。
wait_timeout 和 interactive_timeout 值(默认 28800 秒,即 8 小时),短连接场景一般不用调;但长脚本或 CLI 模式下可能触发max_allowed_packet(默认 4MB)。可临时加大:SET GLOBAL max_allowed_packet = 64*1024*1024;
mysqli_ping($conn) 检测连接有效性,失效则重连;避免复用长时间闲置的连接MySQL 的权限模型、socket/TCP 差异、PHP 扩展加载路径这三处,最容易被跳过验证,却占了八成以上的“连不上”问题。别急着改代码,先盯住这三块。
# mysql
# php
# linux
# go
# docker
# windows
# apache
# nginx
# 防火墙
# access
# 端口
# sql
# for
# mysqli
# internal
# undefined
# function
# macos
# mariadb
# ubuntu
# debian
# unix
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
php8.4如何实现队列任务_php8.4redis队列简单实现方法【教程】
php命令行怎么运行_通过CLI模式执行PHP脚本的步骤【说明】
Golang如何遍历目录文件_Golang filepath.Walk目录遍历操作方法
Windows电脑如何进入安全模式?(多种按键方法)
Win10任务栏天气和资讯怎么关闭 Win10禁用新闻和兴趣功能【教程】
Python如何创建带属性的XML节点
Win11玩游戏全屏闪退怎么办_Win11全屏优化禁用设置【教程】
php转exe用什么工具打包快_高效打包软件推荐【汇总】
如何从 Go 的 map[string]interface{} 中安全获取值
如何在包含多值的列中精准搜索指定演员?
Python异步网络编程_aiohttp说明【指导】
如何使用正则表达式精确匹配最多含一个换行符的 start-end 区段
如何在Golang中实现RPC异步返回_Golang RPC异步处理与回调方法
C++友元类使用场景_C++类间协作设计方式讲解
如何在 Go 中高效缓存与分发网络视频流
如何在Golang中定义接口_抽象方法和多态实现
如何测试您的网站全球打开速度-网站海外测速工
MAC如何修改默认应用程序_MAC文件后缀关联设置与打开方式更改【教程】
VSC里PHP变量未定义报错怎么解决_错误抑制技巧【解答】
Python模块的__name__属性如何由导入方式决定?
如何理解Go指针和内存分配关系_Go Pointer内存Model解析
Python与Docker容器化部署实战_镜像构建与CI/CD流程
如何在Golang中使用time处理时间_Golang time时间解析与格式化方法
如何在 Go 中正确反序列化多个同级 XML 元素(而非单个根节点)
如何在 IIS 上为 ASP.NET 6 应用排除特定目录并交由 PHP 处理
Win11怎么设置桌面图标间距_Windows11注册表IconSpacing修改
Windows10电脑怎么设置防火墙出站规则_Win10禁止程序联网教程
Win11 explorer.exe频繁崩溃_修复Win11资源管理器无限重启【步骤】
Python实现图数据库操作_Neo4j核心CRUD与图算法解析
Python网络异常模拟_测试说明【指导】
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
Win11怎么关闭右下角弹窗_Win11拦截系统通知广告【设置】
Win10怎样设置多显示器_Win10多显示器扩展设置【攻略】
php嵌入式日志记录怎么实现_php将硬件数据写入本地日志文件【指南】
如何在Golang中处理通道发送接收错误_防止阻塞或panic
Python装饰器设计思路_功能增强机制说明【指导】
MAC怎么截图并快速编辑_MAC自带截图快捷键与标注工具使用【方法】
Python大型项目拆分策略_模块化解析【教程】
海外搜索引擎推广效果怎么样,怎么分析效果!
Win11怎么设置麦克风权限_允许应用访问Win11麦克风【详解】
Win11怎么设置快速访问主页_Windows11资源管理器文件夹选项
Win10怎样清理C盘浏览器缓存_Win10清理浏览器缓存步骤【步骤】
Windows10如何更改盘符名称_Win10重命名硬盘分区卷标
Python对象生命周期管理_创建销毁说明【指导】
Win10系统怎么查看网络连接状态_Windows10网络和共享中心
如何在Golang中捕获结构体方法错误_Golang方法返回error处理实践
Python文本编码与解码_跨平台解析说明【指导】
Win11怎么关闭用户账户控制UAC_Windows11更改通知设置等级
2026-01-03
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。