讲师中心 微信公众号
AI工具推荐 视频效率加速

为什么Laravel10的数据库连接配置报错

胖宇同学_1169

胖宇同学_1169

发布时间:2026-09-12 13:07:16

|

363人浏览过

|

来源于php中文网

原创

Laravel 10 数据库连接报错本质是 PDO 建立 TCP 连接时被系统或 MySQL 拒绝,非框架问题;主因四类:DB_HOST 与网络环境不匹配(如 Docker 必须用容器名而非 localhost)、MySQL 服务未启动或端口未暴露、用户权限或 caching_sha2_password 认证插件不兼容、.env 配置未生效(含特殊字符未单引号包裹、未清缓存)。

为什么laravel10的数据库连接配置报错

Laravel 10 数据库连接报错,本质不是框架出问题,而是 PDO 尝试建立 TCP 连接时被操作系统或 MySQL 服务直接拒绝了。错误发生在 Laravel 加载配置之后、执行 SQL 之前,所以查模型、改迁移、清缓存都压根没用——路都没通,还谈什么走车。

下面分四类真实原因讲清楚,每类都带可操作的验证和解法:

DB_HOST 和网络环境不匹配

Docker、Homestead、本地 MAMP/XAMPP 各自对 localhost 的解析逻辑完全不同:

  • 在 Docker 容器里写 DB_HOST=localhost → PHP 会去连容器自己的 127.0.0.1(没 MySQL)
  • 在 Mac 上用 MAMP,MySQL 默认端口是 8889,但 .env 还写着 DB_PORT=3306 → 连不上
  • Linux 或某些 Docker 网络中,localhost 会尝试走 Unix socket,而 DB_SOCKET 没配 → 报 No such file or directory

✅ 做法:

  • 本地开发优先用 DB_HOST=127.0.0.1
  • Docker 场景必须写数据库容器名(如 mysqldb),不能写 localhost127.0.0.1
  • MAMP/XAMPP 用户用终端执行 mysql -h 127.0.0.1 -P 8889 -u root -p 测试是否通

MySQL 服务根本没起来,或端口没暴露

Connection refused 不是密码错,是“敲门没人应”。常见情况:

  • macOS 上 MySQL 没通过 brew services start mysql 启动
  • Docker 容器没运行,或 docker run 漏了 -p 3306:3306
  • 云服务器防火墙拦住了 3306 端口,或安全组没放行

✅ 快速验证:

Laravel
Laravel

避免常见的Laravel错误:N+1查询、批量赋值、缓存陷阱及队列序列化陷阱。

下载
  • 终端运行 sudo netstat -tuln | grep :3306,看有没有 LISTEN
  • docker ps 确认数据库容器在运行且端口映射正确
  • mysql -h $DB_HOST -P $DB_PORT -u $DB_USERNAME -p 手动连一次(别依赖 Laravel)

用户权限和认证插件不兼容

MySQL 8 默认用 caching_sha2_password 插件,而 PHP 7.3 及更早版本的 mysqlnd 扩展不支持 → 表现为卡住、超时、或报 SQLSTATE[HY000] [2054]
另外,权限只开了 'user'@'localhost',但 Laravel 是从 '127.0.0.1' 连的 → 权限不匹配,报 Access denied

✅ 解法:

  • 登录 MySQL 执行:
    ALTER USER 'your_user'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
    FLUSH PRIVILEGES;
  • 或升级 PHP 到 7.4+,并确认 php -i | grep mysqlnd 输出含 caching_sha2_password
  • 授权时明确加 host:GRANT ALL ON db.* TO 'user'@'127.0.0.1' IDENTIFIED BY 'pass';

.env 配置看似改了,其实没生效

.env 有高优先级,但改完不清理缓存、格式写错、特殊字符没包裹,都会让配置“静默失效”:

  • DB_PASSWORD=p@ss/w?rd? 被当 URL 参数截断,实际传的是 p@ss/w
  • DB_PASSWORD="p@ss/w?rd" → 双引号在某些 shell 下会被展开变量
  • .env 改了但没运行 php artisan config:clear → 还在用旧缓存

✅ 正确做法:

  • 密码含 @ / : ? # $ 等字符,一律用单引号包裹:DB_PASSWORD='p@ss/w?rd'
  • 改完立即执行:
    php artisan config:clear
    php artisan optimize:clear  # 防 OPCache 缓存旧值
  • php artisan tinker,输入:
    env('DB_HOST')  
    config('database.connections.mysql.host')

    两个输出必须一致,否则说明没生效

不复杂但容易忽略

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

9004

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

5481

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2015

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

3388

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

4074

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

3191

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4517

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

3522

2023.11.13

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

0

2026.09.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 273人学习

phpEnv手册
phpEnv手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn