You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9本地环境连接MySQL报root@localhost访问被拒错误

Laravel 9 本地MySQL连接失败修复方案

问题核心

报错Access denied for user 'root'@'localhost' (using password: NO)的直接原因是Laravel实际加载的数据库配置不符合预期,当前.env配置写法存在语法问题,加上缓存未彻底清理,导致配置没有正确生效。

修复步骤

  • 修正.env配置格式
    Laravel的.env文件解析规则中,引号会被作为值的一部分读取,你当前配置里DB_USERNAME='root'会被解析为带单引号的用户名'root',DB_PASSWORD=""会被解析为值是两个双引号的字符串,而非空密码。把数据库配置段替换为以下无引号格式,DB_PASSWORD=后直接留空,不要加空格、引号:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
  • 彻底清理所有Laravel缓存
    只清理config缓存不够,旧的应用缓存、服务启动时加载的缓存配置都会影响结果,依次执行以下命令:
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear

如果你是用php artisan serve启动的本地服务,直接终止进程后重新执行启动命令,不要复用已经启动的旧服务进程。

  • 校验实际加载的配置
    执行以下命令进入tinker交互模式,打印实际加载的MySQL连接配置,确认参数没有多余符号:
php artisan tinker
>>> config('database.connections.mysql')

检查返回结果中username字段值为纯字符串root,password字段为空字符串,不存在多余的引号、空格即为正确。

  • 特殊场景适配
    如果以上操作完成后仍报错,检查本地MySQL连接方式:
    • 如果你是Linux/macOS本地环境,尝试把DB_HOST改为localhost,或者在.env中新增配置指定MySQL实际的unix socket路径:
DB_SOCKET=/tmp/mysql.sock

socket路径以你本地MySQL配置的实际路径为准,Windows环境跳过该步骤。

验证方法

配置调整完成后,在项目根目录执行php artisan migrate,如果迁移命令正常执行无连接报错,即代表数据库连接恢复正常。


内容的提问来源于stack exchange,提问作者Sir Charles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 11:06:33