【问题标题】:Laravel auth: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)Laravel 身份验证:SQLSTATE[HY000] [1045] 用户'root'@'localhost'的访问被拒绝(使用密码:NO)
【发布时间】:2020-01-21 12:48:20
【问题描述】:

我试图使用“auth”实现基本的用户注册和登录。我能够创建迁移,并且表也已经在数据库中创建。

当我填写姓名、电子邮件、密码和确认密码等注册详细信息并点击注册时,我登陆时出现此错误:

这是我的 .env 文件中的代码

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=townbakery
DB_USERNAME=root
DB_PASSWORD=12345678!

我添加了任何其他代码或进行了任何其他更改,除了将 Route web.php 更改为

Route::get('/', function () {
return view('auth.login');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

请帮助我哪里出错了。这是我在学习了 laravel 基础之后正在开发的第一个应用程序。

Database.php 看起来像:

mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],

这是我的 User.php 模型:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];

/**
 * The attributes that should be cast to native types.
 *
 * @var array
 */
protected $casts = [
    'email_verified_at' => 'datetime',
];
}

【问题讨论】:

  • 您是否尝试过使用php artisan config:cachephp artisan config:clearphp artisan cache:clear 清除配置缓存?
  • 你的 config/database.php 是什么样子的?
  • @LucasArbex 我已经清除了配置缓存,但仍然遇到同样的错误
  • 你重启你的服务器了吗?如果不重启它
  • @dns_nx 我已经用 Database.php 编辑了问题

标签: php laravel laravel-5.8


【解决方案1】:

最后一种可能性是您的服务器正在通过 Vhost 或 .htaccess 强制环境变量 DB_PASSWORD ether 的值

要验证这一点,请尝试将您的.env 变量更改为DB_T_PASSWORD=12345678!,不要忘记在database.php 配置文件'password' =&gt; env('DB_T_PASSWORD', ''), 中更改它

【讨论】:

  • 根据建议进行更改对我有用。我可以做些什么来解决这个问题吗?
  • 如果您可以访问 vhost 配置,则可以从那里开始。
【解决方案2】:

我遇到了这个错误并解决了。第一次尝试:

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

然后,重新启动您的服务器:

php artisan serve

在解决方案之前,我尝试将用户名、密码和数据库名称硬编码在 database.php 中。在我更改用户名和密码后,它试图找到一个名为 laravel 的数据库。很明显这和第一个配置文件.env.example有关更清楚,它和配置缓存有关。所以删除所有可能的缓存组合。

【讨论】:

    【解决方案3】:

    我遇到了 SQLSTATE[HY000] [1045] 用户“root”@“localhost”的访问被拒绝(使用密码:否)的相同问题。我通过在 mysql db 中创建一个带有密码的新用户并相应地更新了 .env 文件来解决了这个问题。我出来了,问题已经解决了。

    【讨论】:

      【解决方案4】:

      试试这个:

      DB_DATABASE=townbakery
      
      DB_USERNAME=root
      
      DB_PASSWORD=
      

      【讨论】:

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