【问题标题】:Laravel 5 - SQLSTATE[HY000][1045] Access denied for user 'root'@'localhost' (using password: NO)Laravel 5 - SQLSTATE[HY000][1045] 用户'root'@'localhost'的访问被拒绝(使用密码:否)
【发布时间】:2026-01-24 20:00:02
【问题描述】:

我正在尝试在 laravel 中进行 CRUD 操作,但我总是收到此错误消息。我已经将 .env 和 config/database.php 文件配置为我的本地设置,但它不起作用。

我试过 php artisan cache:clear,php artisan config:clear too...

我的配置/database.php:

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', 'localhost'),
    'port' => env('DB_PORT', ''),
    'database' => env('DB_DATABASE', 'feki_test'),
    'username' => env('DB_USERNAME', 'root'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'strict' => true,
    'engine' => null,
],

我的 .env:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=
DB_DATABASE=feki_test
DB_USERNAME=root
DB_PASSWORD=

【问题讨论】:

  • 您确定可以使用这些凭据登录本地 MySQL 吗?好像您的 MySQL 服务器有一个 root 用户的密码。尝试使用相同的凭据从命令行连接到 MySQL。
  • 尝试手动验证一次凭据。以及您没有定义端口甚至清除默认值的任何原因?
  • 我在 Windows 命令提示符中导航到 C:\xampp\mysql\bin 并使用了“mysql -u root -p”命令,该命令在我将密码留空后起作用
  • 是的,我在 XAMPP 中使用 phpmyadmin,用户是“root”并且没有密码。主机是localhost,这就是我修改文件的原因。它适用于原始 laravel 设置,但不适用于宅基地..

标签: php database laravel laravel-5


【解决方案1】:

我遇到了同样的问题。但是我通过删除bootstrap/cache/config.php中保存的config.php文件找到了解决方案。之后只需运行这些命令

php artisan config:clear
php artisan cache:clear
php artisan config:cache

【讨论】:

  • 非常感谢兄弟。我不得不删除引导缓存中的 config.php 文件。
【解决方案2】:

根据 cmets,您正在尝试从 Homestead 访问本地 xampp mysql 服务器。这不起作用,因为应用程序位于隔离的虚拟机中。您需要为您的应用程序使用 Homestead 的 mysql 服务器。为此使用默认连接信息。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

要访问本地计算机上的 Homestead 服务器,请将端口更改为 33060。如果您想使用 SQL 工具连接到数据库,这会很有帮助。

【讨论】:

  • 看起来不错,现在迁移成功了,但我有一个新问题。当我路由到读取数据库行的页面时“连接被拒绝”
  • @AlexitsPatrik 您是从宅基地终端还是从 Windows 运行迁移?
【解决方案3】:

首先,您无需在 config/database.php 中写入凭据。 然后删除您的 .env 文件,然后将您的 .env.example 文件重命名为 .env 然后在终端上运行 PHP artisan key:generate 命令。

提供您的数据库凭据。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=feki_test
DB_USERNAME=root
DB_PASSWORD=

最后重启你的开发服务器。 .

【讨论】:

    【解决方案4】:

    在 .env 和 config->database.php 文件中

    不是这个

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=feki_test
    DB_USERNAME=root
    DB_PASSWORD=
    

    使用这个

    DB_CONNECTION=mysql
    DB_HOST=localhost
    DB_PORT=3306
    DB_DATABASE=db_name
    DB_USERNAME=root
    DB_PASSWORD=''
    

    然后重新启动您的服务器。它肯定会起作用

    【讨论】:

      【解决方案5】:

      我将 127.0.0.1 更改为 localhost 并且它起作用了

      DB_CONNECTION=mysql
      DB_HOST=本地主机
      DB_PORT=3306
      DB_DATABASE=efaf
      DB_USERNAME=root
      DB_PASSWORD=

      【讨论】: