SQLSTATE[HY000] [1045] 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)(SQL:select * 来自`permissions` )

SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) (SQL: select * from `permissions`)

我将我的项目上传到 C-panel 并在我的 env 文件中设置我的数据库连接,使用相同的设置对我来说没问题,但现在我不知道为什么会这样,这是错误:

SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) (SQL: select * 
from `permissions`)

这是我的 env 数据库文件设置:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=thermota_db
DB_USERNAME=thermota_user
DB_PASSWORD= { my password }

我不知道这个权限有误,是我的 permissions_table 吗?

为什么这个 table 出错?

运行 这个命令:

php artisan config:cache

您正在尝试使用不同的用户,这意味着您的根值未被使用。

您需要缓存您的 env 字段以使用其中的值。这也适用于您所做的每项更改。

可能有多种原因。

  1. 当服务器在更新 .ENV 文件上的数据库详细信息之前已经启动时,可能会发生这种情况。
  2. 也可能是因为输入了错误的数据库身份验证详细信息。

解决方案

  1. 每当您更新 .ENV 文件上的值时重新启动服务器。
  2. 确保您使用正确的身份验证详细信息,或者最好还是创建一个新的数据库用户。

如果您在在线服务器上,请执行以下步骤:

1 - locate to : /vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php
2 - add thoes line of code on the begining of this function :  createConnection($dsn, array $config, array $options)
3 - code to add : \Artisan::call('config:cache');
4 - refresh ur home page 
5 - remove the "\Artisan::call('config:cache');" line code
6 - enjoye ^^

我有同样的问题,我无法 运行 "config:cache" artisan 命令,即使 Artisan::call('config:cache');

所以我这样做并解决了我的问题:

artisan config:cache 将 /config 中的所有文件缓存到它存储的单个数组中。然后它从该数组中读取所有配置变量并忽略 .env 或 /config 文件中的任何内容,直到您重新缓存它们。这就是为什么删除 .env.

后它仍然有效的原因

https://laravel.com/docs/5.6/configuration#configuration-caching

如果您没有 ssh 访问您的实时服务器,您只需要删除 bootstrap/cache/config.php 文件,这是 config:cache 生成的缓存文件.