Laravel 5 错误 SQLSTATE[HY000] [1045] 用户 'homestead'@'localhost' 的访问被拒绝(使用密码:YES)

Laravel 5 error SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)

我已成功安装 Laravel 5 并将配置目录中 database.php 文件中的 MySQL 凭据更改为 '

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

我不想使用 homestead,我已将 .env 文件更改为

APP_ENV=local
APP_DEBUG=true
APP_KEY=apLIzEMOgtc5BUxdT9WRLSvAoIIWO87N

DB_HOST=localhost
DB_DATABASE=wdcollect
DB_USERNAME=root
DB_PASSWORD=

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

我不明白为什么它说 'homestead'@'localhost'

的访问被拒绝

您不需要在 database.php 文件中设置凭据。如果您在 .env

中有凭据就足够了

如果您能够直接登录数据库,则此密码一定有效。您的环境可能与此文件中定义的 "local" 不同。测试是 "php artisan env"

现在可以了。我不得不重新启动服务器。 谢谢

尝试检查根目录中的“.env”文件。这将是一个隐藏文件。更正这些值。

 DB_HOST=localhost
 DB_DATABASE=homestead
 DB_USERNAME=homestead
 DB_PASSWORD=secret

请更新以下文件。

供应商 - .env - 在第 7 行

 DB_HOST=localhost
 DB_DATABASE=homestead
 DB_USERNAME=homestead
 DB_PASSWORD=secret

而不是宅基地用户您的数据库、用户名和密码。这应该适合你。

当我在共享主机上在线部署我的网站时,

None 这些对我有用,下面是我所做的工作。

.env 文件中,我更改了

DB_HOST=127.0.0.1

DB_HOST=localhost

还有中提琴,效果和预期的一样好。

请更新 .env 文件

 DB_HOST=localhost
 DB_DATABASE=homestead
 DB_USERNAME=homestead
 DB_PASSWORD=secret

After then restart server

你需要运行这两个命令

php artisan cache:clear
php artisan config:cache

如果您之前使用 localhost 和 root,您的文件将被缓存

删除 /bootstap/cache/config.php

而不是使用这个

DB_HOST=localhost
DB_DATABASE=wdcollect
DB_USERNAME=root
DB_PASSWORD=

使用这个

DB_HOST=localhost
DB_DATABASE=wdcollect
DB_USERNAME=root
DB_PASSWORD=''

我也想到了这个... 然后我通过将数据库信息直接放在“database.php”中来解决它 在你的情况下,我会像这样更改信息

mysql' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'wdcollect',
        'username'  => 'root',
        'password'  => '',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

并且不要忘记在 XAMPP 的 config.inc

中更改您的设置
['auth_type'] = 'config';
['Servers'][$i]['user'] = 'root';
['Servers'][$i]['password'] = '';
['AllowNoPassword'] = true;

将 .env 文件和 config.php 文件与您的用户名和密码以及您在数据库中的主机名匹配 settings.if 它们不相等,关系将无法连接。

这对我有用:

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

谢谢。

如果您使用 MAMP

检查你的端口号,一般是

主机本地主机

端口 8889

用户root

密码root

套接字/Applications/MAMP/tmp/mysql/mysql.sock

我遇到了同样的问题。一切都很好,但在

bootstrap/cache/config.php

总是有不完整的密码。进一步挖掘后,意识到密码中包含“#”字符,并且该字符已被丢弃。因为 '#' 用于将一行标记为注释。

.env 文件应与mysql 数据库中的数据库名称、用户名和密码相同,并检查是否已授予用户访问数据库的所有权限。 我通过在数据库名称和用户名前面添加 cpanel 用户名解决了我的问题 分别像 jumbo_admingo 和 jumbo_user1,其中 jumbo 是我的 cpanel 用户名,admingo 是我在 mysql 中创建的数据库名称,user1 是已获得数据库 admingo 访问权限的用户。 这解决了我的问题。

我遇到了和我一样的问题

  1. php artisan cache:clear
  2. php artisan config:cache

但发现与我 运行 这个 artisan 命令

相同的问题

php artisan view:clear

希望对您有所帮助。

原因是旧的数据库凭据已缓存 /bootstap/cache/config.php

在.env文件中,我修改如下

 DB_HOST=localhost
 DB_DATABASE=homestead
 DB_USERNAME=homestead
 DB_PASSWORD=secret

然后删除了那个文件

/bootstap/cache/config.php 

如果问题仍然存在,您可以尝试以下操作。

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

exit命令退出vagrant 然后重启vargarnt/homestead config

vagrant reload --provision

然后又打开了vagrant

Vagrant Up
Vagrant ssh
  1. 编辑 laravel 根目录中的 .env 文件。看起来如下所示:

     DB_HOST=localhost
     DB_DATABASE=laravel
     DB_USERNAME=root
     DB_PASSWORD=your-root-pas
    
  2. 同时在 phpmyadmin 中创建一个名为 "laravel" 的数据库。

  3. 运行 以下命令:

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

它对我有用,XAMPP 与 Apache 和 MySQL。

在 XAMPP 上打开终端 > 转到 /opt/lampp/htdocs/project_name > 运行 php artisan migrate

.env 文件

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=8080
DB_DATABASE=database_name
DB_USERNAME=root
DB_PASSWORD=

我遇到了同样的问题,所以我意识到 .env 文件不接受特殊字符,因为我的密码有这些字符,所以我在 config/database.php 文件中添加了密码。

在我的例子中,我想连接到安装在 windows 上的数据库,我以前是通过 workbench 访问的,所以我用输入 [=10] 获得的 IP 地址替换了 localhost =] 在 windows 命令提示符下

哎呀! 感谢下面的 umair.ashfr 回答,我终于解决了一个困扰我神经元的问题。

我有一个密码 DB_PASSWORD=ffjdh5#fgr 在我的 .env 上,MySQL 连接优雅地说“SQLSTATE[HY000] [1045] 用户拒绝访问...”,无论 php artisan 是什么风格试图 运行.

问题是密码中的“#”符号。 谨防!这意味着评论的开始,因此我的密码被默默地 t运行cated! 解决方案是像这样声明密码 DB_PASSWORD="ffjdh5#fgr"

此致

就我而言,这实际上是root用户权限问题。我的Laravel配置都是完美的,但后来我发现这是root用户权限问题,因为我的MySQL配置被莫名其妙地改变了。

  • 所以我导航到 xampp 文件夹 > C:\xampp\mysql\bin
  • 搜索 my.ini 文件并在编辑器中将其打开,然后在以下位置添加 skip-grant-tables

[mysqld] skip-grant-tables port=3306

它奏效了。

我为此花了几个小时 :-( 最后,它真的很容易破解

之前

DB_PASSWORD=#Root2020$

已更新

DB_PASSWORD="#Root2020$"

我认为问题出在密码中的#,这就是为什么我必须将密码写在引号中的原因。

在 .env 文件中声明密码 DB_PASSWORD="2o0@#5TGR1NG"

如果密码中包含 # 符号,则密码将在“”之间声明。

最佳解决方案是。 不要在数据库用户密码中使用特殊字符。 如果你真的想使用特殊字符然后使用双 cote"" 在 .env 文件中更改密码后,您必须删除 /bootstap/cache/config.php config.php 文件或使用其他文件重命名。

/bootstap/cache/(手动删除所有缓存文件)

在我的例子中,问题是密码中的 #,这就是为什么 Laravel 显示错误,如果密码中有特殊字符,则必须将密码写在引号中。

DB_PASSWORD=Test@123##   //not working without double quotes.

DB_PASSWORD="Test@123##" //working with double quotes. 

当密码包含特殊字符时出现 在这种情况下,我们可以将密码放入字符串

DB_PASSWORD="您的密码"

在我的情况下工作正常

只需删除下一个文件: bootstap/cache/config.php