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

请求解决SQLSTATE[HY000][1045]数据库访问被拒绝错误(附database.php配置)

解决SQLSTATE[HY000] [1045] Access Denied错误的方案

这个错误指向很明确:你的应用尝试用root用户无密码连接本地MySQL,但MySQL拒绝了这个请求。结合你给出的database.php配置(全部依赖环境变量读取),咱们一步步来排查解决:

1. 优先检查.env文件的核心配置

首先找到项目根目录下的.env文件(如果没有就复制.env.example重命名为.env),确保数据库相关配置项完全匹配你的MySQL实际情况:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=你的目标数据库名称
DB_USERNAME=root
DB_PASSWORD=你的MySQL root用户实际密码 # 这里绝对不能留空!除非你确实没给root设密码(不推荐)

注意:如果你的MySQL root用户真的没有设置密码,那DB_PASSWORD可以留空,但这种情况只建议在本地测试环境用,生产环境务必设置密码。

2. 清除Laravel的配置缓存

如果你之前运行过php artisan config:cache,Laravel会把配置文件缓存起来,修改.env后必须清除缓存才能生效:

php artisan config:clear
php artisan cache:clear

3. 验证MySQL本身的连接权限

如果上面两步做完还是报错,那要确认MySQL的root用户是否允许从localhost/127.0.0.1登录,且密码正确。可以用命令行直接测试:

mysql -u root -p

输入密码后如果能成功进入MySQL控制台,说明账号密码没问题;如果不行,那需要重置MySQL root密码,或者调整用户权限(比如MySQL会区分socket连接和TCP连接的用户权限,试试把.env里的DB_HOST改成localhost而非127.0.0.1)。

4. 检查database.php的 fallback 值

你的database.php里username的默认 fallback 值是forge,password是空,但你实际用的是root,所以一定要确保.env里的DB_USERNAME确实设成了root,不然应用会自动 fallback 到forge用户,自然会触发权限错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:03:51