Laravel auth: SQLSTATE[HY000] [1045] 用户 'root'@'localhost' 的访问被拒绝(使用密码:NO)
Laravel auth: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
我正在尝试使用 'auth' 实现基本的用户注册和登录。我能够创建迁移并且表也已经在数据库中创建。
当我填写姓名、电子邮件、密码和确认密码等注册详细信息并点击注册时,我遇到了这个错误:
这是我的 .env 文件中的代码
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=townbakery
DB_USERNAME=root
DB_PASSWORD=12345678!
除了将路由 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',
];
}
最后一种可能性是您的服务器通过 Vhost 或 .htaccess
强制环境变量 DB_PASSWORD
ether 的值
要验证这一点,请尝试将 .env
变量更改为 DB_T_PASSWORD=12345678!
并且不要忘记在 database.php
配置文件 'password' => env('DB_T_PASSWORD', ''),
中进行更改
试试这个:
DB_DATABASE=townbakery
DB_USERNAME=root
DB_PASSWORD=
我遇到了这个错误并解决了。第一次尝试:
php artisan config:cache
php artisan config:clear
php artisan cache:clear
然后,重新启动您的服务器:
php artisan serve
在解决方案之前,我尝试将用户名、密码和数据库名称硬编码在database.php中。在我更改用户名和密码后,它试图找到一个名为 laravel 的数据库。很明显这和第一个配置文件有关。env.example更清楚的是,它和配置缓存有关。所以删除所有可能的缓存组合可能。
我遇到了同样的 SQLSTATE[HY000] [1045] 用户 'root'@'localhost' 访问被拒绝(使用密码:NO)的问题。我通过在 mysql db 中创建一个带密码的新用户并相应地更新 .env 文件来解决这个问题。我出来了,问题解决了。
我正在尝试使用 'auth' 实现基本的用户注册和登录。我能够创建迁移并且表也已经在数据库中创建。
当我填写姓名、电子邮件、密码和确认密码等注册详细信息并点击注册时,我遇到了这个错误:
这是我的 .env 文件中的代码
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=townbakery
DB_USERNAME=root
DB_PASSWORD=12345678!
除了将路由 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',
];
}
最后一种可能性是您的服务器通过 Vhost 或 .htaccess
强制环境变量DB_PASSWORD
ether 的值
要验证这一点,请尝试将 .env
变量更改为 DB_T_PASSWORD=12345678!
并且不要忘记在 database.php
配置文件 'password' => env('DB_T_PASSWORD', ''),
试试这个:
DB_DATABASE=townbakery
DB_USERNAME=root
DB_PASSWORD=
我遇到了这个错误并解决了。第一次尝试:
php artisan config:cache
php artisan config:clear
php artisan cache:clear
然后,重新启动您的服务器:
php artisan serve
在解决方案之前,我尝试将用户名、密码和数据库名称硬编码在database.php中。在我更改用户名和密码后,它试图找到一个名为 laravel 的数据库。很明显这和第一个配置文件有关。env.example更清楚的是,它和配置缓存有关。所以删除所有可能的缓存组合可能。
我遇到了同样的 SQLSTATE[HY000] [1045] 用户 'root'@'localhost' 访问被拒绝(使用密码:NO)的问题。我通过在 mysql db 中创建一个带密码的新用户并相应地更新 .env 文件来解决这个问题。我出来了,问题解决了。