Laravel实例连接MySQL遭1045权限拒绝,同类环境其他应用正常求助
解决Laravel应用无法连接MySQL的问题
从你给出的信息来看,核心问题非常明显:你的.env文件里配置的DB_PASSWORD=password,但config('database.connections.mysql')输出的密码却是nottherightpassword——这说明Laravel没有读取到你最新的.env配置,而是在使用缓存的旧配置。下面是针对性的解决步骤:
清除Laravel配置缓存
Laravel会在生产环境(甚至部分开发场景下)缓存配置文件,导致.env的修改无法生效。执行以下命令清除缓存:# 清除配置缓存 php artisan config:clear # 清除应用缓存 php artisan cache:clear # 可选:如果使用了路由缓存,也一并清除 php artisan route:clear检查环境配置文件优先级
Laravel会根据APP_ENV的值加载对应环境的配置文件,比如如果你的APP_ENV=local,系统会优先读取.env.local文件,而不是根目录的.env。检查以下几点:- 查看
.env里的APP_ENV值,确认是否存在对应的.env.{APP_ENV}文件 - 如果存在该文件,检查里面的
DB_PASSWORD是否是旧的错误值
- 查看
确认.env文件的权限
Web服务器(Apache/Nginx)需要有读取.env文件的权限,否则Laravel会 fallback 到默认配置或缓存的配置。执行以下命令调整权限:# 设置.env文件权限为644(可读可写给所有者,可读给其他) chmod 644 .env # 确保文件所属用户为Web服务器用户(比如www-data) chown www-data:www-data .env重启Web服务器和PHP-FPM
有时候修改.env后,PHP进程没有重新读取环境变量,需要重启相关服务:# Apache重启命令 sudo service apache2 restart # Nginx重启命令 sudo service nginx restart # PHP-FPM重启命令(根据你的PHP版本调整,比如php8.1-fpm) sudo service php8.1-fpm restart
完成以上步骤后,再重新打印config('database.connections.mysql'),确认密码已经和.env里的一致,之后应该就能正常连接数据库了。
内容的提问来源于stack exchange,提问作者amflare
相关产品推荐
相关产品推荐

