一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

PHP语言源码搭建数据库连接失败排查疑难解答

时间:2026-06-20 08:47:54 编辑:袖梨 来源:一聚教程网

PHP源码搭建时数据库连不上,不是代码写错了,而是环境、配置、权限、扩展几个环节中某一处没对上。关键不是猜,是按顺序验证——先让错误说话,再一层层往下压。

立即捕获真实错误信息

别让连接失败沉默。在 mysqli_connect() 或 new PDO() 后必须加错误输出:

  • mysqli:用 if (!$conn) { echo "错误:" . mysqli_connect_error(); exit; }
  • PDO:用 try-catch 包裹,catch (PDOException $e) { echo $e->getMessage(); }

常见错误直读:

  • Connection refused → MySQL服务没启动,或端口被拦
  • Access denied for user → 用户名/密码错,或 'user'@'host' 不匹配
  • Unknown MySQL server host → host 值拼错、DNS不通、容器名写错
  • No such file or directory → localhost 走 socket 失败,换 127.0.0.1 即可

确认MySQL服务真正在运行且监听正确

一键环境(如phpStudy、XAMPP)里“绿色图标”不等于服务活着:

立即学习“PHP免费学习笔记(深入)”;

  • 打开控制面板,看 MySQL 状态是否为“已启动”;若失败,点“日志”查 mysql_error.log
  • 命令行验证:Windows 运行 netstat -ano | findstr :3306,Linux/macOS 运行 ss -tlnp | grep 3306
  • 检查 my.cnf 或 my.ini:确认没有 skip-networking,且 bind-address = 127.0.0.10.0.0.0(非仅 ::1)

核对连接参数与用户授权细节

账号密码对 ≠ 能连上,“user”@“host”这个组合必须严丝合缝:

  • 登录 MySQL 执行:SELECT User, Host FROM mysql.user;,看你要用的用户对应 Host 是 localhost、127.0.0.1 还是 %
  • 本地开发统一用 127.0.0.1(强制走 TCP),避免 localhost 因 socket 路径引发歧义
  • Docker 或远程场景下,用户 Host 必须是具体 IP 或 %,并执行:GRANT ALL ON your_db.* TO 'user'@'%' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES;

检查PHP扩展是否启用且版本兼容

哪怕参数全对,pdo_mysql 或 mysqli 没开,连接就卡在第一步:

  • 运行 php -m | grep -i pdo(Linux/macOS)或 php -m(Windows 手动查找),确认 pdo、pdo_mysql、mysqli 都在列表中
  • Laravel 要求 ctype、json、mbstring;Symfony 需 intl;Laravel 10+ 要求 PHP ≥ 8.1
  • MySQL 8.0+ 默认用 caching_sha2_password 认证插件,PHP 7.4 以下不支持 → 执行:ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'pass'; FLUSH PRIVILEGES;

热门栏目