【问题标题】:SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) . DB_HOST set to localhostSQLSTATE[HY000] [1045] 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)。 DB_HOST 设置为 localhost
【发布时间】:2019-10-04 09:46:05
【问题描述】:

我将 Laravel 项目从 localhost 移动到服务器。我在服务器上完成了每一步。

我可以在我的服务器上查看登录页面。问题是我无法连接到我的 MySQL 服务器。

我的.env 文件:

APP_NAME=Transport
APP_ENV=local
APP_KEY=base64:mrakeyidharhaikonsdf
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=transport_db
DB_USERNAME=root
DB_PASSWORD=mypass

我尝试将主机更改为127.0.0.1 并尝试输入我的服务器的IP 地址。它没有帮助我。我错过了什么吗?

我的错误:

SQLSTATE[HY000] [1045] 用户'root'@'localhost'的访问被拒绝(使用密码:否)(SQL:选择计数(*)作为来自users的聚合,其中email = user.email@ gmail.com)

我知道这个问题在 StackOverflow 上可能已经有了答案。但我这里有不同的问题。

【问题讨论】:

  • 更新数据库设置后是否缓存了配置?
  • 我做到了。 !!使用php artisan config:cache
  • 更改.env文件中的任何内容后,运行php artisan config:cache命令。
  • 您的密码未被使用。
  • 那么有问题了。我也在研究 L6。我有 config.php 文件。

标签: php mysql laravel laravel-6


【解决方案1】:

说实话,在开发 Laravel 6 时,我也多次遇到这个问题,可能无法找出解决方案。我尝试了类似的命令 php artisan config:cachephp artisan config:clear,但是这两个命令没有帮助。

要解决这个问题,您必须执行以下所有命令:

php artisan route:cache
php artisan route:clear
php artisan config:cache
php artisan config:clear
php artisan optimize

注意:确保在 .env 中添加了 db_password 并且它不为空,并检查您的 db_password 是否使用任何特殊字符。始终将它们附在"" 中。

例子:

DB_PASSWORD="%123456%"

要调试此问题,您还可以创建一个测试路由,然后将.env 变量转储到那里以检查它们是否具有正确的值。

Route::get('/test/env', function () {
    dd(env('DB_DATABASE')); // Dump 'db' variable value one by one
});

注意:请务必重启您的服务器。

【讨论】:

  • 阿雷亚尔。检查所有这些 cmets。我做了一切。当我运行 php artisan optimize 时,我遇到了同样的错误。 PDOException::("SQLSTATE[HY000] [1045] 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)")
  • 尝试访问你的控制器中的.env variable 并转储它的值你得到了什么?
  • @farooq 我现在更新了我的答案检查并发布你得到了什么?
  • transport 这是数据库名称。
  • 哪个对你帮助最大;)
【解决方案2】:

确保您的数据库凭据和数据库主机设置正确:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE="your_database_name"
DB_USERNAME="put_db_user_name _here"
DB_PASSWORD="put_db_password_here_if_have_set"

如果您没有设置任何数据库密码,则添加:

DB_PASSWORD=""

【讨论】:

  • 您是否尝试将 DB_HOST=localhost 更改为 DB_HOST=127.0.0.1 ?
  • 我做到了。也试过把IP地址。没有帮助
  • 一旦你应该尝试放入双引号,如 DB_USERNAME="db_user_name" DB_PASSWORD="db_password" 然后 php artisan cache:clear
  • 这太疯狂了。我错过了我的DB_PASSWORD = "db_password"
【解决方案3】:

问题是项目制作了缓存文件。必须删除“config.php”才能让系统重新启动,您可以通过找到此文件并删除它来做到这一点:

bootstrap/cache/config.php

【讨论】:

    【解决方案4】:

    我在使用 homestead 的 Laravel 框架中工作时遇到了这样的问题。其实这个错误是因为我没有在Vagrant创建数据库。所以,我创建了数据库。更详细的:

    1. 运行 vagrant ssh 获取 homestead 命令行。

    2. 运行 mysql 启动 MySQL 命令行客户端。

    3. 运行create database database_name; 来创建您的数据库。请注意,数据库应位于两个 ` (not ') 标记内。

    4. 修改Laravel项目的.env文件如下:

      DB_CONNECTION=mysql
      DB_HOST=192.168.10.10
      DB_PORT=3306
      DB_DATABASE=askidb2
      DB_USERNAME=homestead
      DB_PASSWORD=secret
      
    5. (如果您之前在 Laravel 项目中为创建表创建了模型和配置文件),请在项目文件夹的命令行中运行 php artisan migrate。这会导致它在 askidb2 数据库中创建表。

    6. (对你来说可能是可选的)因为在我设置为问题表播种所需的文件之前,我只是运行php artisan db:seed 来播种我想要的表。

    【讨论】:

      【解决方案5】:

      如果您使用Homestead 为您的应用程序提供服务,您必须连接到 Homestead 内置数据库。否则,当我尝试连接到安装在我的 Mac 上的 MySQL 数据库时,我会收到错误 (SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost')。

      这是我连接到 Homestead 数据库的方法。我不确定为什么 Laravel 文档中的主机 → 127.0.0.1 不起作用。

      在 .env 文件中

      DB_CONNECTION=mysql
      DB_HOST=192.168.10.10
      DB_PORT=3306
      DB_DATABASE=blog
      DB_USERNAME=homestead
      DB_PASSWORD=secret
      

      我使用 Sequel Pro 作为 GUI 来管理数据库,下面是我将 Sequel Pro 连接到 Homestead MySQL 数据库的方法。

      以标准模式连接

      主机:192.168.10.10
      用户:宅基地
      密码:秘密
      端口:3306

      以 SSH 模式连接

      【讨论】:

        【解决方案6】:

        所以问题是我的。对此我深表歉意。

        我错过了将我的DB_PASSWROD 放入""。所以这导致了我的两个小时。

        我的密码开头包含一些特殊字符。所以它应该在"" 内以避免出现问题。

        例如,如果我的密码是"%helloworld@", 那么在.env文件中,应该是:

        `DB_PASSWORD="%helloworld@" `
        

        以前,我有

        `DB_PASSWORD=%helloworld@
        

        【讨论】:

          【解决方案7】:

          在建立与数据库的连接时出现此错误。问题是我在 localhost,而不是 127.0.0.1。

          【讨论】:

            【解决方案8】:

            第一

            DB_DATABASE="your_database_name"
            DB_USERNAME="put_db_user_name _here"
            DB_PASSWORD="put_db_password_here_if_have_set"
            

            然后输入

            php artisan config:clear
            

            这将使您的问题变得清晰。然后输入

            php artisan migrate
            

            【讨论】:

              【解决方案9】:

              我遇到此错误是因为我的 XAMPP 用户帐户访问权限为 root 和密码与 Laravel .env 数据库 DB_USERNAME 和 DB_PASSWORD 不匹配。

              【讨论】:

                【解决方案10】:

                就我而言,如果我有 Bitnami WordPress。这是一项使用 Apache/localhost 地址的服务,因此我的 XAMPP 实例只能通过 127.0.0.1 访问,并且在访问 localhost 时出现“访问被拒绝错误 ...”。然后当我停止 Bitnami 服务时,一切恢复正常。

                【讨论】:

                  猜你喜欢
                  • 2018-10-08
                  • 2018-07-22
                  • 2020-01-16
                  • 2020-08-20
                  • 2017-11-05
                  • 1970-01-01
                  • 2015-08-16
                  • 2021-09-01
                  相关资源
                  最近更新 更多