Laravel 5错误SQLSTATE [HY000] [1045]用户'forge'@'localhost'的访问被拒绝(使用密码:NO)

Ula*_*ana 5 php database laravel-5

有时(大约每20个请求)我会收到此错误。但是下一个(下一秒)相同的请求也可以。我不知道为什么它没有通过第一个。有时我会遇到另一个错误:

找不到支持的加密器。密码和/或密钥长度无效。

我的.env数据库参数很好。

我已经使用生成了密钥 php artisan key:generate

该密钥在我.env文件中的一个APP_KEY密钥下

config/app.php有一把钥匙'key' => env('APP_KEY'), 'cipher' => 'AES-256-CBC'

有谁知道这怎么发生?

小智 15

只需使用缓存您的配置

php artisan config:cache
Run Code Online (Sandbox Code Playgroud)

每次设置.env文件后不要忘记执行此 操作。


Mar*_*nix 7

在过去的几天里,我遇到了完全相同的问题,我想我已经解决了:

.env中的设置由于某些原因或某些原因并不总是使用,偶尔Laravel只会使用config / app.php和config / database.php中的默认设置。

config / app.php:

'key' => env('APP_KEY', 'SomeRandomString'),

'cipher' => 'AES-256-CBC',
Run Code Online (Sandbox Code Playgroud)

将'SomeRandomString'更改为.env生成的密钥

config / database.php

'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],
Run Code Online (Sandbox Code Playgroud)

从.env将localhost,数据库,用户名,密码更改为您的实际设置。如果使用其他数据库,则此示例适用于MySQL,请改用这些变量。

可能有一个更好的解决方案(更安全吗?),但这是迄今为止阻止该错误出现的原因。

  • 是的,我做了同样的事情,并且正在工作。但我不明白为什么有时会跳过我的设置 (2认同)
  • 这需要进一步调查。某些类型的错误会导致.env被忽略 (2认同)