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

时间:2017-02-09 22:28:49

标签: php database laravel-5

有时(大约每20个请求)我收到此错误。但下一个(下一秒),相同的请求,没问题。我不知道为什么第一个失败了。有时我会得到另一个错误:

  

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

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

我使用php artisan key:generate

生成了一个密钥

此密钥位于.env密钥

下的APP_KEY文件中

我的config/app.php有一个键'key' => env('APP_KEY'), 'cipher' => 'AES-256-CBC'

有没有人知道如何发生这种情况?

4 个答案:

答案 0 :(得分:7)

只需使用

来缓存您的配置
php artisan config:cache

设置.env文件后,别忘了每次执行此操作。

答案 1 :(得分:3)

过去几天我遇到了同样的问题,我认为我解决了这个问题:

.env中的设置并不总是出于某种原因使用,有时候Laravel只会使用config / app.php和config / database.php中的默认设置。

配置/ app.php:

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

'cipher' => 'AES-256-CBC',

将'SomeRandomString'更改为.env

中生成的密钥

配置/ 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,
    ],

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

可能有一个更好的解决方案(更安全?)但是到目前为止这一点仍然不会出现错误。

答案 2 :(得分:0)

我刚刚合并了git的更改而没有更新.env文件。

基本上,此人更改了代码,因此应用程序需要env文件中的以下密钥:

DB_SOME_DATABASE=something
DB_SOME_USERNAME=something
DB_SOME_PASSWORD=something

但是我仍然有旧的凭据,因此它“看起来正确”,但是Laravel抛出了这个错误,使它看起来好像没有使用env文件。

这表明,如果您看到此内容,请仔细检查.env文件中是否有拼写错误,这会导致Laravel尝试使用默认值(即:查看文件夹{{1 }}中看到config/database.php)。

这可能不是错字。可能有人添加了数据库连接,也许您尚未更新'forge'文件。

答案 3 :(得分:0)

你必须删除 bootstrap/cache/config.php