Laravel身份验证:SQLSTATE [HY000] [1045]用户'root'@'localhost'的访问被拒绝(使用密码:NO)

时间:2019-09-20 12:49:05

标签: php laravel laravel-5.8

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

当我填写诸如姓名,电子邮件,密码和确认密码之类的注册详细信息并点击注册时,我就出现此错误:

enter image description here

这是我的.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',
];
}

4 个答案:

答案 0 :(得分:2)

最后一种可能性是您的服务器通过Vhost或.htaccess强制使用env变量DB_PASSWORD以太的值

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

答案 1 :(得分:0)

我遇到此错误并解决。首先尝试:

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

然后,重新启动服务器:

php artisan serve

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

答案 2 :(得分:0)

我遇到了相同的SQLSTATE [HY000]问题[1045]用户'root'@'localhost'的访问被拒绝(使用密码:NO)。我通过在MySQL数据库中创建一个具有密码的新用户并相应地更新了.env文件来解决了该问题。我发现问题已解决。

答案 3 :(得分:-1)

尝试一下:

DB_DATABASE=townbakery

DB_USERNAME=root

DB_PASSWORD=