【问题标题】:SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) (SQL: select * from `permissions`)SQLSTATE[HY000] [1045] 用户'root'@'localhost'的访问被拒绝(使用密码:NO)(SQL:select * from `permissions`)
【发布时间】:2020-11-16 20:42:13
【问题描述】:

我在 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 }

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

为什么这个表会出错?

【问题讨论】:

  • 该错误中没有任何内容与您的 env 文件一致。确保它被称为 .env 。错误说提供的用户是没有密码的root用户..
  • 上面写着“使用密码:否”,也许把你的密码放在引号中以避免错误?

标签: php mysql laravel laravel-7


【解决方案1】:

可能有多种原因。

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

解决方案

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

【讨论】:

  • 如何重置我的服务器,我的项目上传到 c-panel
  • 我 100% 确定身份验证
  • 您需要从您的 Cpanel 为该用户启用所有权限。
  • 是的项目离线工作正常,为用户启用所有权限
【解决方案2】:

运行这个命令:

php artisan config:cache

您正在尝试使用其他用户,这意味着您的根值未使用。

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

【讨论】:

  • 只有在您启用了配置缓存时才适用。您可以轻松禁用本地开发的配置缓存。
  • 好吧,我发现 99% 的此类问题都在发生,因为应用程序没有读取 env 文件。 laravel 还需要设置缓存,以便它可以使用 env
  • 我不明白为什么要删除缓存以及这与问题有什么关系
  • 您的答案php artisan optimize 只是php artisan config:clear php artisan config:cache php artisan route:clear php artisan route:cache 的别名,我评论的重点是告诉人们盲目地开始使用此命令并不总是正确的。即)缓存在本地开发环境中。
【解决方案3】:

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

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 ^^

【讨论】:

  • 如果您能提供更多信息来说明这如何解决问题或该路线的输出如何帮助解决问题,那就太好了。
  • 昨天我确实遇到了同样的问题,我把这条路线放在了我的 web.php 上,我在浏览器上调用了它一段时间后,我检查了主页,所以它工作正常。
  • 此命令清除缓存并重新缓存配置。此行为表明配置之前已缓存,因此在您清除缓存之前对配置的更改不会生效。
  • 我所知道的一切都对我有用,所以它很酷,这就是我分享给她的原因^^
【解决方案4】:

我有同样的问题,我无法运行“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 生成的缓存文件。

【讨论】:

    猜你喜欢
    • 2020-06-07
    • 2020-01-16
    • 2017-07-25
    • 2021-09-01
    • 2018-07-03
    • 2020-08-20
    • 2018-10-08
    • 2018-07-22
    相关资源
    最近更新 更多