Php &引用;拒绝用户访问''@';本地主机';到数据库';锻造“;随机出现

Php &引用;拒绝用户访问''@';本地主机';到数据库';锻造“;随机出现,php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,我有一个数据库搜索功能,但有时我会收到以下消息: [2016-02-04 07:03:18] local.ERROR: PDOException: SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge' in C:\xampp\htdocs\reko\api\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connect

我有一个数据库搜索功能,但有时我会收到以下消息:

[2016-02-04 07:03:18] local.ERROR: PDOException: SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge' in C:\xampp\htdocs\reko\api\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:55
Stack trace:
#0 C:\xampp\htdocs\reko\api\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php(55): PDO->__construct('mysql:host=loca...', 'forge', '', Array)
...
在十个电话中,我有一个收到500个错误信息,但我不知道为什么。其他调用给出了正确的结果

环境署署长

搜索功能:

public function search(Modul $modul, Request $request)
{
    $question = Question::whereModulId($modul->id)
        ->where('value', 'LIKE', '%' . $request->get('keywords') . '%')
        ->with('tags')
        ->whereHas('exams', function ($query) use ($request) {
            $query->where('date', '>=', $request->get('year').'-01-01');
        });
    if (!$request->get('parent'))
        $question->where('type', '<>', 'parent');
    if (!$request->get('own'))
        $question->where('type', '<>', 'own');
    if (!$request->get('normal'))
        $question->where('type', '<>', 'normal');
    if ($request->get('answered'))
        $question->has('answers');
    return $question->paginate(10);
}

我没有修改database.php文件,所有其他调用都很有效。

这似乎包含了大多数答案:

记住不要像一个用户所说的那样编辑你的核心文件。 只要做安全检查,清除缓存,就行了

希望能有帮助


作为一种解决方法,您可以使用所有权限添加到DB forge帐户。

尝试
php artisan clear:cache
清除缓存并重新配置缓存
php artisan config:cache
它可能适合您

请运行此命令

php artisan cache:clear 
然后

php artisan config:cache

我曾经有过同样的问题。我发现我的默认连接被设置为PostgreSQL而不是MySQL,所以我在database.php中更改了默认连接

'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],
'default' => env('DB_CONNECTION', 'mysql'),
其他明智的做法是在.env中添加以下内容

DB_CONNECTION=mysql

尝试在您的.env文件中添加剩余的方法

托管时,我们经常会遇到此错误。

您应该看到,您已经向托管中的数据库授予了特权用户的权限

首先

首先,我需要查看数据库名称是否正确

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=zhara_demo
DB_USERNAME=zhara_admin
DB_PASSWORD=zhara@2021 

  • 请尝试
    php artisan clear:cache
    清除缓存并重新配置
  • 您的缓存
    php artisan config:cache
    它可能适合您

我从未使用过它,用户甚至不存在。“我的代码”中没有任何内容检查数据库日志中是否有错误。事实上,它的不一致性失败意味着它可能是数据库的错误,而不是PHP的。我想我找到了错误。
forge
用户是
数据库.php
中laravel的默认值。因此,laravel可能会忘记加载
.env
文件并使用错误的用户。我更新了这个文件,现在它似乎工作了。我相信这是一个常见的问题。您可能希望通过运行
php artisan config:cache
来缓存配置文件,但建议您仅在生产模式下进行缓存,因为您可能会在开发过程中经常更改环境变量。这很有趣,因为对我来说,这种情况经常发生一次。。。我只在本地windows环境中使用.env文件进行开发。但是为什么laravel有时不加载env文件呢?
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=zhara_demo
DB_USERNAME=zhara_admin
DB_PASSWORD=zhara@2021