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

新手上路,请多包涵

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

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

我的 .env 数据库参数没问题。

我使用 php artisan key:generate

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

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

有谁知道这是怎么发生的?

原文由 Ulana 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 282
2 个回答

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

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

配置/app.php:

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

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

将“SomeRandomString”更改为 .env 中生成的密钥

配置/数据库.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 将本地主机、数据库、用户名、密码更改为您的实际设置。此示例适用于 MySQL,如果您使用其他数据库,请改为更改这些变量。

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

原文由 Marnix 发布,翻译遵循 CC BY-SA 4.0 许可协议

只需使用缓存您的配置

php artisan config:cache

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

原文由 Chan Yung Keat 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏