0

我知道这个问题已经被回答过,但没有一个答案适用于我的情况。本质上,我安装了 Laravel。我试着跑

php artisan migrate

我收到以下错误:

 Access denied for user 'homestead'@'localhost'

现在这是交易。我没有使用宅基地。这是一个标准的 LAMP 安装,我已经更改了 config/database.php 和 .env 文件中的数据库设置,以反映我的数据库的正确用户名和密码。我找不到工匠仍然尝试使用宅基地用户的合乎逻辑的理由。我的 APP_ENV 设置为本地,并且在应用程序或配置文件夹中都没有生产文件夹。我不知道它把宅基地用户拉到哪里去了。

预计到达时间:

我已经重新启动了 apache,并同时运行了

php artisan config:clear 

php artisan cache:clear

它仍在将宅基地用户从某事中拉出来,但我根本不知道在哪里。

4

3 回答 3

0

这是练习调试技能的好任务!:)

因此,很明显 Laravel 从某个地方获取了“宅基地”用户名——可能是配置文件、代码中的默认值(实际上这不太可能,但我们正在调试)等等。

所以我的第一步是在你的 Laravel 应用程序的基本文件夹中执行这个:

find . -type f -size -30k -exec grep -H "homestead" \{\} \;

它将在内部任何地方查找小于 30 KB 的包含“宅基地”的文件,如果找到 - 显示文件名和包含此模式的行。我们可以安全地假设“宅基地”没有存储在数据库中的任何位置,因为它用于访问数据库,所以事先有必要。

找到位置后,修复错误可能就像编辑文件一样简单!

如果 find 没有返回结果,仍然有可能:

  1. 如果你的 Linux 用户是 'homestead' 并且你尝试连接到 MySQL 时没有指定用户名,'homestead' 将被自动使用。这意味着 Laravel 出于某种原因无法访问您的配置文件(权限?路径错误?)

  2. 检查 storage/logs/laravel.log 并更详细地查看最后一个错误。逐个文件检查代码文件(文件列表在错误中给出,从顶部开始)并查看它如何获取 MySQL 用户名。

于 2016-01-08T03:22:56.543 回答
0

我真的不知道那个特定的构建发生了什么,但我关闭这个问题只是为了完成它。我破坏了构建并重新开始,没有任何问题。那里发生的事情将永远是个谜。

于 2016-01-08T19:30:09.173 回答
-1

您可以有多个database.php配置文件。加载的配置文件取决于执行应用程序的上下文。

例如,我database.php的项目中有三个不同的配置文件:

app/config/database.php
app/config/local/database.php
app/config/testing/database.php

在我的“测试”配置文件中,我定义了两个不同的连接:

return [
    'default'     => 'sqlite',

    'connections' => array(
        'mysql'  => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'test',
            'username'  => 'user',
            'password'  => 'secret',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
        'sqlite' => array(
            'driver'   => 'sqlite',
            'database' => ':memory:',
            'prefix'   => ''
        ),
    )
];

请注意,default密钥引用,因此我在定义中sqlite输入的凭据无关紧要。mysql(除非我在运行时使用覆盖该defaultConfig::set('database.default', 'mysql')

在您的config/目录中搜索字符串'homestead'。您将找到您的应用程序正在加载的配置文件。更改default参数以匹配您要使用的连接。

于 2016-01-08T02:15:18.047 回答