Laravel:SQLSTATE [28000] [1045] 用户 'homestead'@'localhost' 的访问被拒绝

Posted

技术标签:

【中文标题】Laravel:SQLSTATE [28000] [1045] 用户 \'homestead\'@\'localhost\' 的访问被拒绝【英文标题】:Laravel: SQLSTATE[28000] [1045] Access denied for user 'homestead'@'localhost'Laravel:SQLSTATE [28000] [1045] 用户 'homestead'@'localhost' 的访问被拒绝 【发布时间】:2015-06-03 10:43:17 【问题描述】:

我刚刚安装了 laravel 并进行了迁移。但是当我尝试运行它时,我得到了这个错误:

[PDOException]                                                               
  SQLSTATE[28000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)  

谁能告诉我有什么问题?我认为 Database.php 文件看起来与正常情况不同。这是新 Laravel 中的新功能吗?

我的数据库配置:

'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'LaraBlog'),
            'username'  => env('DB_USERNAME', 'root'),
            'password'  => env('DB_PASSWORD', 'root'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

希望有人可以帮助我:)

【问题讨论】:

修复或授予所需用户对数据库的访问权限。 添加你的 laravel 版本,查看 .env -file 。您是否知道,您 db-access 的数据驻留在 .env 文件中?查询中的用户名和密码是否正确?还是这些是默认值? 更新我的 .env 文件并运行 php artisan config:clear 为我解决了这个问题 【参考方案1】:

我试图对 config 文件夹中的 database.php 文件进行更改,它看起来像这样

'default' => 'mysql',
....
...
'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'sample'),
            'username'  => env('DB_USERNAME', 'root'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

我没有使用任何虚拟机,我使用的是本地计算机,数据库用户为 root,密码为空。

我还更改了我的 .env 文件,它看起来像这样:

APP_ENV=local
APP_DEBUG=true
APP_KEY=zLzPMzs5W4FNNuguTmbG8M0iFqhIVnsP

DB_HOST=localhost
DB_DATABASE=sample
DB_USERNAME=root
DB_PASSWORD=null

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null

即使在我尝试使用 laravel 附带的注册表单进行注册时进行了所有更改后,我还是尝试将用户添加到我的数据库中,但出现以下错误

完成所有更改后,我清除了缓存并再次加载它,现在它似乎对我有用! 如果有人也面临同样的问题,只需运行以下命令

php artisan cache:clear
php artisan config:cache

【讨论】:

非常感谢。两个工匠命令拯救了我的一天。 Laravel 有时会变得讨厌。 也为我工作.. Thnx ! 最近刚开始使用 Laravel 5.4 并且遇到了同样的问题。这些命令帮助很大。 我应该记下这两行。像魅力一样工作。 php artisan 缓存:清除 php artisan 配置:缓存【参考方案2】:

我想通了 :) 不得不碰碰 .env 文件 :)

架构有什么变化吗?

这不应该工作吗:

public function up()

    // Create table with columns
    Schema::create('users', function($table) 
        $table->increments('id');
        $table->string('username');
        $table->string(Hash::make('password'));
        $table->string('firstname');
        $table->string('lastname');
        $table->string('email')
        $table->string('role');
        $table->timestamps();
    ); 



/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()

    // Insert table to database
    Schema::drop('users');

【讨论】:

忘记了;之后(电子邮件)【参考方案3】:

尝试检查根目录中的“.env”文件。首先取这些值。如果 .env 文件中没有给出,则您的只是默认值。

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=Your_Database_Name
DB_USERNAME=Your_UserName
DB_PASSWORD=Your_Password

【讨论】:

【参考方案4】:

在 **config > local >database.php 中修改 database.php 文件 而不是更改 config > database.php 文件。

希望它会起作用;)

【讨论】:

【参考方案5】:

实际上,当您使用像 xampp 这样的 localhost 服务器时,您会手动“homestead”创建数据库,此类错误是由于缺少数据库参数造成的。 100% 工作测试并查看

点击你的 cmd 并输入:

create database homestead;  

【讨论】:

【参考方案6】:

我在创建 laravel 项目后遇到了同样的问题。验证命令运行成功。

 php artisan make:auth

但是当我尝试注册或登录时,我得到了同样的错误。我运行以下命令

    php artisan config:clear

然后停止 laravel 应用程序以及我的服务器。重新启动我的 laravel 应用程序和服务器后一切正常。

【讨论】:

【参考方案7】:

在这里尝试了所有解决方案,但对我没有用

第一次尝试就成功了:

如果您使用的是 PHP 的默认 Web 服务器(例如 php artisan serve),您需要在更改 .env 文件值后重新启动服务器。

我从这里laravel.io找到了这个解决方案(阅读Byjml的解决方案)

【讨论】:

以上是关于Laravel:SQLSTATE [28000] [1045] 用户 'homestead'@'localhost' 的访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

PDOException SQLSTATE[28000] [1045] 用户'homestead'@'localhost'的访问被拒绝

发生连接授权失败。原因:GSSAPI 服务器凭据无效。错误代码=-4214,SQLSTATE=28000

DB2,原因:密码已到期。 ERRORCODE=-4214, SQLSTATE=28000

SQLSTATE[HY000] [1049] 未知数据库 'laravel'

SQLSTATE [23502]:非空违规:7 错误 - laravel

Laravel:SQLSTATE [HY000] [2002] 连接被拒绝