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

部署Laravel 9项目至VPS时遇SQLSTATE[28000] [1045]权限错误求助

Laravel 9 部署时SQLSTATE[28000] [1045] 错误排查方案

针对你遇到的SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO)错误,按以下步骤排查:

  • 验证.env文件的有效性

    1. 确认服务器上的.env文件确实存在且内容正确,避免本地文件未上传或上传后被覆盖。
    2. 检查文件权限:运行ls -la .env,确保服务器的Web进程(如www-data或nginx用户)拥有读取权限,必要时执行chmod 644 .env调整。
    3. Laravel会缓存配置文件,修改.env后必须清理缓存:
      php artisan config:clear
      # 生产环境清理后重新缓存
      php artisan config:cache
      
  • 检查数据库配置的硬编码情况
    打开config/database.php,查看MySQL配置段:

    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'root'),
        'password' => env('DB_PASSWORD', ''),
        // ...其他配置
    ],
    

    如果.env中的DB_USERNAME或DB_PASSWORD未生效,Laravel会使用这里的默认值,导致以无密码的root用户连接数据库。

  • 直接测试数据库连接
    在服务器终端执行命令测试数据库账号是否可用:

    mysql -u your_db_user -p your_db_name
    

    输入对应密码后如果能正常登录,说明数据库本身配置没问题,问题出在Laravel的配置读取环节。

  • 排查环境变量覆盖
    部分服务器可能通过系统环境变量或PHP配置覆盖了.env中的值。在项目根目录创建临时文件test_env.php:

    <?php
    echo "DB_USERNAME: " . env('DB_USERNAME') . "<br>";
    echo "DB_PASSWORD: " . env('DB_PASSWORD') . "<br>";
    ?>
    

    访问该文件,查看输出的数据库账号密码是否和.env一致,若不一致则说明存在环境变量覆盖。

  • 确认项目目录权限
    确保storage和bootstrap/cache目录拥有Web进程的读写权限:

    chmod -R 755 storage bootstrap/cache
    # 或根据服务器Web用户调整归属
    chown -R www-data:www-data /path/to/your/project
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:04:58