【问题标题】:Laravel 5 error SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)Laravel 5 错误 SQLSTATE[HY000] [1045] 用户 'homestead'@'localhost' 的访问被拒绝(使用密码:YES)
【发布时间】:2015-06-04 10:10:17
【问题描述】:

我已成功安装 Laravel 5,并将 config 目录中 database.php 文件中的 MySQL 凭据更改为 '

mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'wdcollect'),
            'username'  => env('DB_USERNAME', 'root'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

我不想使用宅基地,我已将 .env 文件更改为

APP_ENV=local
APP_DEBUG=true
APP_KEY=apLIzEMOgtc5BUxdT9WRLSvAoIIWO87N

DB_HOST=localhost
DB_DATABASE=wdcollect
DB_USERNAME=root
DB_PASSWORD=

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null

我不明白为什么它说'homestead'@'localhost'的访问被拒绝

【问题讨论】:

  • 你在mysql中检查过那个用户的权限吗?
  • 我个人会尝试使用mysql 命令在命令行上连接这些凭据。然后以root身份登录,验证用户是否有权连接到localhost,如果需要,请重置应用程序正在使用的用户的密码
  • 创建新用户并将用户分配给数据库有助于托管服务器。还按照下面的建议进行了缓存和配置清除

标签: php database xampp localhost laravel-5


【解决方案1】:

它现在正在工作。我不得不重新启动服务器。 谢谢

【讨论】:

  • 我遇到了同样的问题,后来自动修复了,我觉得 laravel 的最新更新解决了这个问题?你有这种感觉吗?
  • 重启!它恢复正常。天哪!
  • 感谢您分享您的答案。我刚才遇到了同样的问题,然后重新启动服务器,它现在可以工作了!
  • 这发生在我的生产服务器上,通过 https...通过控制台正常工作...重新启动,一切都变得更好
  • 是你重启的apache服务器还是web服务器?
【解决方案2】:

我遇到了同样的问题。一切都很好,但在

bootstrap/cache/config.php

密码总是不完整。进一步挖掘后,发现密码中包含“#”字符,并且该字符已被丢弃。 As '#' 用于将一行标记为注释。

【讨论】:

  • 你也可以把密码放在".
  • 这真是太棒了!正是我在从 Laravel 5.5 升级到 5.8 时遇到了这个问题。相同的数据库凭据没有给我权限。
  • 你用“#”的想法救了我。尽管这是问题所在,但我永远不会有。谢谢!
  • 这确实是目标。我只是把我的密码放在 config\database.php 文件中就可以了。
【解决方案3】:

你需要运行这两个命令

php artisan cache:clear
php artisan config:cache

【讨论】:

    【解决方案4】:

    我花了几个小时在这个 :-( 最后,它真的很容易破解

    之前

    DB_PASSWORD=#Root2020$
    

    更新

    DB_PASSWORD="#Root2020$"
    

    我认为问题出在密码中的#,这就是为什么我必须将密码写在引号中。

    【讨论】:

    • 谢谢,在我的情况下它解决了(本地开发中的laravel 8.35),即使没有特殊字符!
    • 去过那里.. 做到了?
    • 似乎是哈希导致了这个问题。 S#####它!
    【解决方案5】:

    当我在共享主机上在线部署我的网站时,这些都不适合我,下面是我所做的。

    .env文件中,我改了

    DB_HOST=127.0.0.1
    

    DB_HOST=localhost
    

    还有中提琴,它按预期工作得很好。

    【讨论】:

    • 另外,您可以检查其他数据是否正确,至少在我的情况下,我的密码错误。谢谢!
    • 我猜不出来。它正在使用 127.0.0.1 的先前服务器上运行,但不适用于新服务器。所以,有了这个答案,我解决了我的问题。非常感谢
    • 在 Laravel 8 环境中为我工作,竖起大拇指
    【解决方案6】:

    如果你之前使用 localhost 和 root 你的文件被缓存

    删除/bootstap/cache/config.php

    【讨论】:

      【解决方案7】:

      这对我有用:

      php artisan config:clear
      php artisan cache:clear
      php artisan config:cache
      

      谢谢。

      【讨论】:

        【解决方案8】:

        我有同样的问题,所以我意识到.env文件不接受特殊字符,因为我的密码有这些字符,我在config/database.php文件中添加了密码。

        【讨论】:

        • 非常感谢,我添加了双引号“my_password”,它工作正常!
        • 谢谢你这对我也有用,我还在 .env 文件的密码中添加了双引号,我也在密码中使用了特殊字符。
        【解决方案9】:

        天哪! 感谢 umair.ashfr 在下面的回答,我终于解决了一个正在吞噬我的神经元的问题。

        我有一个密码 DB_PASSWORD=ffjdh5#fgr 在我的 .env 上,MySQL 连接优雅地说“SQLSTATE [HY000] [1045] 用户拒绝访问......”,无论我尝试运行哪种 php artisan。

        问题在于密码中的“#”号。 谨防!这意味着评论的开始,因此我的密码被默默地截断了! 解决方案是声明密码 DB_PASSWORD="ffjdh5#fgr"

        问候

        【讨论】:

        • 谢谢。这对我有用。 # 符号中的问题。当我在 env 中使用 # 作为数据库密码时,它会显示该错误。设置密码后没有现在它工作正常。
        【解决方案10】:

        我遇到了同样的问题

        1. php artisan 缓存:清除
        2. php 工匠配置:缓存

        但发现与我运行此工匠命令相同的问题

        php 工匠视图:清除

        希望对您有所帮助。

        【讨论】:

          【解决方案11】:

          而不是使用这个

          DB_HOST=localhost
          DB_DATABASE=wdcollect
          DB_USERNAME=root
          DB_PASSWORD=
          

          使用这个

          DB_HOST=localhost
          DB_DATABASE=wdcollect
          DB_USERNAME=root
          DB_PASSWORD=''
          

          【讨论】:

          • 描述你解决的错误是什么。
          • 错误是用户没有获得访问数据库的任何权限。我们可以通过在权限部分创建或编辑用户来分配新的用户角色和权限来解决此错误。
          【解决方案12】:

          在 .env 文件中声明密码,如 DB_PASSWORD="2o0@#5TGR1NG"

          如果您的密码中包含#号,则密码将在“”之间声明。

          【讨论】:

            【解决方案13】:

            您不需要在 database.php 文件中设置凭据。如果您在 .env 中有凭据就足够了

            如果您能够直接登录数据库,则此密码必须有效。您的环境可能与此文件中定义的“本地”不同。测试是用“php artisan env”

            【讨论】:

            • 当前应用环境:本地
            • 在 L5 中没有这样的本地/产品,有一个决定一切的 .env 文件(它被 git 忽略,所以在生产中你不会在 git push 时重写它)
            【解决方案14】:

            尝试检查根目录中的“.env”文件。这将是一个隐藏文件。更正这些值。

             DB_HOST=localhost
             DB_DATABASE=homestead
             DB_USERNAME=homestead
             DB_PASSWORD=secret
            

            【讨论】:

            • 这对我有用,特别是当我尝试更改 database.php 中的值时,我一直收到错误,好像我没有更改任何内容一样。
            【解决方案15】:

            请更新以下文件。

            供应商 - .env - 第 7 行

             DB_HOST=localhost
             DB_DATABASE=homestead
             DB_USERNAME=homestead
             DB_PASSWORD=secret
            

            而不是宅基地用户您的数据库,用户名和密码。这应该适合你。

            【讨论】:

              【解决方案16】:

              如果你在 MAMP 上

              检查您的端口号,一般情况下

              主机本地主机

              8889 端口

              用户根

              密码根

              套接字/Applications/MAMP/tmp/mysql/mysql.sock

              【讨论】:

                【解决方案17】:
                1. 在你的 laravel 根目录中编辑 .env 文件。如下所示:

                   DB_HOST=localhost
                   DB_DATABASE=laravel
                   DB_USERNAME=root
                   DB_PASSWORD=your-root-pas
                  
                2. 同时在 phpmyadmin 中创建一个名为“laravel”的数据库。

                3. 运行以下命令:

                   php artisan cache:clear
                   php artisan config:cache
                   php artisan config:clear   
                   php artisan migrate
                  

                它对我有用,XAMPP 与 Apache 和 MySQL。

                【讨论】:

                  【解决方案18】:

                  /bootstap/cache/(手动删除所有缓存文件)

                  【讨论】:

                    【解决方案19】:

                    在我的情况下,问题是密码中的 #,这就是 Laravel 显示错误的原因,如果密码中有特殊字符,则必须将密码写到引号中。

                    DB_PASSWORD=Test@123##   //not working without double quotes.
                    
                    DB_PASSWORD="Test@123##" //working with double quotes. 
                    

                    【讨论】:

                      【解决方案20】:

                      当密码包含特殊字符时会发生这种情况 在这种情况下,我们可以将密码放入字符串中,如

                      DB_PASSWORD="你的密码"

                      就我而言,效果很好

                      【讨论】:

                      【解决方案21】:

                      请更新 .env 文件

                       DB_HOST=localhost
                       DB_DATABASE=homestead
                       DB_USERNAME=homestead
                       DB_PASSWORD=secret
                      

                      然后重启服务器

                      【讨论】:

                        【解决方案22】:

                        我也想出了这个... 然后我通过将数据库信息直接放在“ database.php ”中来解决它 在你的情况下,我会改变这样的信息

                        mysql' => [
                                'driver'    => 'mysql',
                                'host'      => 'localhost',
                                'database'  => 'wdcollect',
                                'username'  => 'root',
                                'password'  => '',
                                'charset'   => 'utf8',
                                'collation' => 'utf8_unicode_ci',
                                'prefix'    => '',
                                'strict'    => false,
                            ],
                        

                        别忘了在 XAMPP 的 config.inc 中更改您的设置

                        ['auth_type'] = 'config';
                        ['Servers'][$i]['user'] = 'root';
                        ['Servers'][$i]['password'] = '';
                        ['AllowNoPassword'] = true;
                        

                        【讨论】:

                          【解决方案23】:

                          将 .env 文件和 config.php 文件与您的用户名和密码以及您在数据库设置中的主机名匹配。如果它们不相等,则关系将无法连接。

                          【讨论】:

                            【解决方案24】:

                            .env 文件的数据库名称、用户名和密码应与 mysql 数据库中的相同,并检查是否授予用户访问数据库的所有权限。 我通过在数据库名称和用户名前面添加 cpanel 用户名解决了我的问题 分别像 jumbo_admingo 和 jumbo_user1 其中 jumbo 是我的 cpanel 用户名, admingo 是我在 mysql 中创建的数据库名称, user1 是已被提供访问数据库 admingo 的用户。 这解决了我的问题。

                            【讨论】:

                              【解决方案25】:

                              原因是旧的数据库凭据被缓存/bootstap/cache/config.php

                              在.env文件中,我修改如下

                               DB_HOST=localhost
                               DB_DATABASE=homestead
                               DB_USERNAME=homestead
                               DB_PASSWORD=secret
                              

                              然后删除该文件

                              /bootstap/cache/config.php 
                              

                              如果问题仍然存在,您可以尝试以下方法。

                              php工匠配置:清除 php工匠缓存:清除 php工匠配置:缓存

                              通过编写exit 命令退出vagrant 然后重启 vargarnt/homestead 配置

                              vagrant reload --provision
                              

                              然后又打开了vagrant

                              Vagrant Up
                              Vagrant ssh
                              

                              【讨论】:

                                【解决方案26】:

                                在 XAMPP 上打开终端 > 转到 /opt/lampp/htdocs/project_name > 运行 php artisan migrate

                                .env 文件

                                DB_CONNECTION=mysql
                                DB_HOST=localhost
                                DB_PORT=8080
                                DB_DATABASE=database_name
                                DB_USERNAME=root
                                DB_PASSWORD=
                                

                                【讨论】:

                                  【解决方案27】:

                                  在我的情况下,我想连接到安装在 Windows 上的数据库,我曾经通过工作台访问,所以我用我通过在 Windows 命令提示符下键入 ipconfig 获得的 IP 地址替换了 localhost

                                  【讨论】:

                                    【解决方案28】:

                                    在我的情况下,它实际上是 root 用户权限问题。我的Laravel 配置都很完美,但后来我发现这是root用户权限问题,因为我的MySQL配置发生了某种变化。

                                    • 所以我导航到 xampp 文件夹 > C:\xampp\mysql\bin
                                    • 搜索 my.ini 文件并在编辑器中打开它,然后在以下位置添加 skip-grant-tables

                                    [mysqld] skip-grant-tables port=3306

                                    它成功了。

                                    【讨论】:

                                      【解决方案29】:

                                      最好的解决方案是。 不要在 db 用户密码中使用特殊字符。 如果您真的想使用特殊字符,请使用 double cote "" 在.env 文件中更改密码后,您必须删除/bootstap/cache/config.php config.php 文件或与他人重命名。

                                      【讨论】:

                                        猜你喜欢
                                        • 2017-08-10
                                        • 2019-07-23
                                        • 2017-08-08
                                        • 2023-03-08
                                        • 2018-07-03
                                        • 2017-07-25
                                        • 2018-05-03
                                        • 2016-12-16
                                        • 2017-07-18
                                        相关资源
                                        最近更新 更多