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

Laravel项目数据库连接失败求助:SQLSTATE[HY000] [1045]权限错误

解决Laravel连接MySQL时的1045权限拒绝错误

这个错误其实很典型,就是你的Laravel项目配置的数据库凭证和MySQL实际的用户权限不匹配导致的。咱们一步步来排查解决:

1. 先确认MySQL root用户的密码状态

错误里明确写了using password: NO,说明Laravel是用空密码尝试连接的,但你的MySQL root用户大概率是设置了密码的。你可以先手动验证:
打开命令行终端,输入:

mysql -u root -p

如果终端提示你输入密码才能登录MySQL,那就说明root用户确实有密码,而你的Laravel配置里没填,这就是问题根源。

2. 修正Laravel的环境配置

找到你项目根目录下的.env文件(这个是Laravel优先读取的环境配置文件),定位到数据库相关的配置项:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3308
DB_DATABASE=rentable
DB_USERNAME=root
DB_PASSWORD=

把DB_PASSWORD=后面的空值改成你的MySQL root用户的实际密码,比如你的密码是myrootpass123,就改成:

DB_PASSWORD=myrootpass123

⚠️ 注意:修改完.env后,一定要清除Laravel的配置缓存,不然可能还是会用旧的缓存配置,执行命令:

php artisan config:clear

3. 检查MySQL用户的主机权限

有时候即使密码对了,root@localhost这个用户可能没有访问rentable数据库的权限。你可以登录MySQL后执行以下SQL来排查:

-- 查看root用户的主机列表
SELECT user, host FROM mysql.user WHERE user = 'root';
-- 查看root@localhost的权限
SHOW GRANTS FOR 'root'@'localhost';

如果发现root@localhost没有rentable数据库的权限,执行下面的SQL来授权:

GRANT ALL PRIVILEGES ON rentable.* TO 'root'@'localhost';
FLUSH PRIVILEGES;

4. 确认MySQL端口是否正确

错误里显示Laravel尝试连接的是3308端口,而MySQL默认端口是3306。如果你没有修改过MySQL的端口配置,那可能是.env里的DB_PORT填错了,改成3306再试试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:05:22