【问题标题】:php artisan migrate - SQLSTATE[HY000] [1045] Access denied for user 'laravel'@'localhost'php artisan migrate - SQLSTATE [HY000] [1045] 用户'laravel'@'localhost'的访问被拒绝
【发布时间】:2017-08-27 09:52:12
【问题描述】:

我想在this course 下设置和学习 Laravel

当我尝试使用命令 php artisan migrate 时,我收到此错误:

[Illuminate\Database\QueryException]                                                                                                        
  SQLSTATE[HY000] [1045] Access denied for user 'laravel'@'localhost' (using password: NO) (SQL: select * from information_schema.tables whe  
  re table_schema = laravel and table_name = migrations)

[PDOException]                                                                            
  SQLSTATE[HY000] [1045] Access denied for user 'laravel'@'localhost' (using password: NO)

我一直在寻找答案。我想我可能需要在 .env 文件中进行一些更改,但我不知道是什么,到目前为止我尝试过的任何方法都没有奏效。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=

我使用的是 Ubuntu 16.04,而不是视频中的 Mac OS X,所以我想知道我应该做些什么不同的事情?是否有一些我没有正确设置的 MySQL 设置?

【问题讨论】:

  • 你的mysql服务运行了吗???并检查.env文件中的mysql凭据
  • sudo /etc/init.d/mysql start 对于这个命令我得到:[ ok ] Starting mysql (via systemctl): mysql.service. 仍然错误是一样的。我应该检查哪些凭据?
  • 数据库中是否存在laravel用户?您是否尝试过在数据库上创建表 laravel 并向用户添加所有权限?

标签: php laravel laravel-5


【解决方案1】:

我的 plesk ubuntu 18.04 远程服务器遇到了同样的问题。在您的 .env 文件中,在您的数据库密码和用户名周围加上双引号,然后运行 ​​php artisan config:clearphp artisan cache:clear

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME="xyz"    
DB_PASSWORD="123"

我以前从未遇到过这个问题。

【讨论】:

  • 谢谢。这也解决了我在 Plesk 上使用 Ubuntu 18.04 远程服务器
  • 这解决了我的问题!我正在从旧的 Laravel 版本更新一个项目,并且凭据在没有双引号的情况下运行正常。
  • 谢谢!在用户名和密码上添加双引号有效。之后我的迁移成功运行。
  • 谢谢,非常感谢:)
  • 谢谢,这解决了我使用 Windows 10、Laravel 8.6.8、MariaDB 10.3.32 的问题。
【解决方案2】:

您没有名为“laravel”的用户。 您应该将 DB_USERNAME 更改为您实际用于访问数据库的名称。 大多数情况下它是 root,所以 .env 中的更改应该是

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

【讨论】:

    【解决方案3】:

    如果您尝试使用 homestead 运行此命令,您需要确保将 .env 文件中以下环境变量的值更改为:

    DB_DATABASE=homestead
    DB_USERNAME=homestead
    DB_PASSWORD=secret
    

    更改值后,请确保在执行任何其他操作之前运行以下两个命令:

    php artisan config:clear
    php artisan cache:clear
    

    【讨论】:

    • 对于任何使用 Laravel 7、homestead 和 mysql 8+ 的人——这就是解决方案!
    • 这对我也有用。这是来自全新安装的 Homestead。
    • 这是 Laravel 8+ 上的答案
    【解决方案4】:

    在我的情况下,它使用 localhost 而不是 127.0.0.1 解决了

    【讨论】:

      【解决方案5】:

      面临同样的问题。使用

      更新了我在 mysql 中的 root 密码
      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '.....'
      

      更新的密码没有特殊字符“#”。在 .env 文件中更新了它。然后在终端成功运行php artisan migrate

      【讨论】:

      • 作为附加信息,我使用的是 Ubuntu 18.04,并且密码已经放在 .env 文件中的分号中。
      • 我用引号包围了它DB_PASSWORD="5bHKx$$J#"
      【解决方案6】:

      如果您的 DB_PASSWORD 包含 # 符号,则像这样将其括起来

      DB_PASSWORD="dfdf#523"
      

      【讨论】:

        【解决方案7】:

        如果您使用 MAMP 和默认的 root 用户名/密码,您的 .env 文件数据库配置应该使用“localhost”而不是 127.0.0.1 和“root”作为用户名和密码:

        DB_CONNECTION=mysql
        DB_HOST=localhost
        DB_PORT=3306
        DB_DATABASE=laravel
        DB_USERNAME=root
        DB_PASSWORD=root
        

        【讨论】:

          【解决方案8】:

          我遇到服务器没有看到更新 .env 文件的情况,php artisan cache:clear 没有帮助,但只需要刷新服务器 php artisan serve

          【讨论】:

            【解决方案9】:

            我有同样的问题。最终对我有用的是执行Method 2 on this page

            通过我的努力,我了解到有 4 个不同的地方可以为 XAMPP 附带的 MySQL 安装的root 设置密码。仅在其中的 1 或 2 个位置设置密码是不够的。这就是我为能够执行初始迁移所做的:

            1. 在 Laravel 的 .env 文件中,在 DB_... 部分中。
            2. localhost:[your Apache port]/phpmyadmin 中,通过用户帐户 -> root -> 编辑权限 -> 更改密码。
            3. localhost:[your Apache port]/phpmyadmin中,通过Method 2 on this page中描述的方法。
            4. 在您的 config.inc.php 文件中,对我来说(在 MacOS 上)在 /Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.php 中。这个方法在Method 2 on this page中也有描述。

            然后重新启动 MySQL 和您的 Web (Apache) 服务器

            请注意,在您成功协调密码并再次尝试迁移后,您可能会收到与“拒绝访问密码”错误几乎相同的错误输出。但是,这是与字符串长度相关的另一个错误。 See here for how to fix that issue.

            【讨论】:

              【解决方案10】:

              如果您使用 MAMP,请同时检查您的端口号。一般来说,它应该是这样的:

              Host    localhost
              Port    8889
              User    root
              Password    root
              Socket  /Applications/MAMP/tmp/mysql/mysql.sock
              

              【讨论】:

                【解决方案11】:
                1. phpmyadmin 中添加新用户,例如。 username-xyz, password-123

                2. 创建一个新数据库,例如。 dbname

                3. 像这样更新您的.env 文件:

                  DB_CONNECTION=mysql
                  DB_HOST=127.0.0.1
                  DB_PORT=3306
                  DB_DATABASE=dbname
                  DB_USERNAME=xyz    
                  DB_PASSWORD=123
                  
                4. 现在使用php artisan cache:clear清除缓存

                5. 最后,尝试使用php artisan migrate迁移您的表

                【讨论】:

                  【解决方案12】:

                  当我遇到这个问题时,是因为我忘记了我的本地环境在 3306 以外的端口上运行 mysql。对我来说,它是 3307。如果您使用的是 XAMPP,我会检查您使用的端口并制作确保它与您的 .env 文件匹配。

                  【讨论】:

                    【解决方案13】:

                    如果您设置了 PHPMyAdmin 密码,那么您需要在 .ENV 文件上设置类似的内容

                    DB_CONNECTION=mysql
                    DB_PORT=3306
                    DB_HOST=localhost
                    DB_DATABASE=db_name
                    DB_USERNAME=root
                    DB_PASSWORD=root
                    

                    如果没有设置密码,那么您可以将 DB_PASSWORD 留空 DB_PASSWORD=

                    两者都完成了仍然无法正常工作,然后它会缓存问题以修复它,您需要将其添加到位于 bootstart/cache/config.phpdelete 配置文件中 之后 php artisan config: cache work and same file auto-generated

                    【讨论】:

                      【解决方案14】:

                      如果您之前在 phpmyadmin 上使用不同的用户名和密码创建了数据库,则您的本地主机帐户需要一个新用户来使用不同的密码。我尝试了以前使用过的用户名和密码,并为我解决了问题。

                      【讨论】:

                        【解决方案15】:

                        我也遇到了同样的错误,你可以参考这里:

                        // config your host-name
                        APP_URL=http://test.demo
                        
                        LOG_CHANNEL=stack
                        
                        DB_CONNECTION=mysql
                        // default phpmyadmin display: localhost:3306
                        DB_HOST=localhost
                        DB_PORT=3306
                        DB_DATABASE=test
                        DB_USERNAME=root
                        DB_PASSWORD=root
                        

                        【讨论】:

                          【解决方案16】:

                          你可以试试这个

                          DB_HOST=localhost
                          DB_PORT=3306
                          DB_DATABASE=test
                          DB_USERNAME=root
                          DB_PASSWORD=
                          

                          【讨论】:

                            【解决方案17】:

                            对我来说,我只是在 .env 文件中添加我的用户名的密码

                            【讨论】:

                              【解决方案18】:

                              我也有这样的问题。我通过

                              创建了一个新数据库
                              CREATE DATABASE askiDB CHARACTER SET utf8;
                              

                              然后在 MySQL Workbench 的导航器控制台中,我选择了这个数据库,并在管理角色选项卡中选择了所有角色。然后我在登录选项卡中设置了密码。 此外,在项目的 .env 文件中,我正确设置了该文件的 DB_USERNAME 和 DB_PASSWORD。 然后我执行下面的命令 php工匠迁移

                              效果很好。

                              【讨论】:

                                【解决方案19】:

                                打开 config/database.php 并在此处添加您的密码:

                                'mysql' => [
                                ...,
                                'password' => ''
                                ...])
                                

                                【讨论】:

                                  【解决方案20】:

                                  对我来说,通过在用户和密码字段中添加 '' 解决了这个问题,如下所示:

                                  DB_CONNECTION=mysql
                                  DB_HOST=127.0.0.1
                                  DB_PORT=3306
                                  DB_DATABASE=someCoolDatabaseName
                                  DB_USERNAME='someCoolUsername'
                                  DB_PASSWORD='someCoolPassword'
                                  

                                  确保您能够通过 CMD 使用 mysql -u root -p 登录并成功登录。

                                  【讨论】:

                                    【解决方案21】:

                                    做了所有的事情,最后我用引号括住了用户名和密码

                                    DB_CONNECTION=mysql
                                    DB_HOST=127.0.0.1
                                    DB_PORT=3306
                                    DB_DATABASE=database
                                    DB_USERNAME='username'
                                    DB_PASSWORD='password'
                                    

                                    【讨论】:

                                      【解决方案22】:

                                      我收到了同样的消息,我发现错误是由不正确的凭据引起的。

                                      以下凭据出错 '用户名' => env('DB_USERNAME', 'root'), '密码' => env('DB_PASSWORD', '密码'),

                                      下面的正确凭据解决了问题。 '用户名' => env('DB_USERNAME', 'root'), '密码' => env('DB_PASSWORD', ''),

                                      【讨论】:

                                        【解决方案23】:

                                        使用 Docker 的 Laravel

                                        1:删除所有图像和卷

                                        ./vendor/bin/sail down --rmi all -v 
                                        

                                        2:重新创建图像和卷

                                        ./vendor/bin/sail up 
                                        

                                        这个问题有很多不同的解决方案。我希望这个对你有帮助。

                                        【讨论】:

                                          猜你喜欢
                                          • 2015-06-15
                                          • 2019-12-01
                                          • 2018-07-22
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 2015-05-16
                                          • 2019-07-09
                                          • 2021-09-01
                                          相关资源
                                          最近更新 更多