Laravel 10项目迁移至新系统/目录的最佳实践及数据库问题排查
Laravel 10迁移后数据库认证失败解决方案
核心问题定位
错误提示中仍出现旧数据库用户OLDUSER和旧库名OLDUSER_dbname,说明系统未读取到你修改后的.env配置,而非项目根路径配置问题(Laravel迁移路径一般无需额外调整,除非存在硬编码路径)。
解决步骤
强制清除Laravel配置缓存
Laravel会缓存环境配置,修改.env后必须执行命令清除缓存:php artisan config:clear若后续需要缓存配置(生产环境建议),可执行
php artisan config:cache。确认
.env文件有效性
检查新项目根目录(/var/www/html/MYPROJECT)下的.env文件,确保数据库配置项正确:DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=你的新库名 DB_USERNAME=你的新用户名 DB_PASSWORD=你的新密码同时确保文件权限正确(如设置为
644,归属用户为www-data),避免Web服务器或PHP进程无法读取。排查硬编码配置
打开config/database.php,检查是否存在硬编码的旧数据库信息:'mysql' => [ // 注意这里的默认值,若env读取失败会使用第二个参数 'database' => env('DB_DATABASE', 'OLDUSER_dbname'), 'username' => env('DB_USERNAME', 'OLDUSER'), ]若存在,将默认值改为新的数据库信息或直接移除默认参数(仅保留
env()调用)。重启相关服务
- 若使用PHP-FPM,重启服务:
systemctl restart php-fpm # 根据你的PHP版本调整,如php8.2-fpm - 重启Web服务器(Nginx/Apache):
systemctl restart nginx # 或 systemctl restart apache2 - 若使用
php artisan serve,需终止原有进程后重新启动。
- 若使用PHP-FPM,重启服务:
验证数据库用户权限
用命令行测试新用户是否能正常连接数据库:mysql -u 新用户名 -p 新库名若连接失败,需在MySQL中为新用户授权:
GRANT ALL PRIVILEGES ON 新库名.* TO '新用户名'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES;
内容的提问来源于stack exchange,提问作者CS 2000
相关产品推荐
相关产品推荐

