SQLSTATE [HY000] [1045]用户'root'@'localhost'的访问被拒绝(使用密码:NO)。 DB_HOST设置为localhost

时间:2019-10-04 09:46:05

标签: php mysql laravel laravel-6

我知道这个问题可能已经在stackOverflow中得到了答案。 但是我这里有不同的问题。 我将laravel项目从localhost移到了server。我已经完成了服务器中的每个步骤。 我可以查看服务器中的登录页面。 问题是,我无法与mysql服务器连接。 我的.env文件。

APP_NAME=Transport
APP_ENV=local
APP_KEY=base64:mrakeyidharhaikonsdf
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=transport_db
DB_USERNAME=root
DB_PASSWORD=mypass

我尝试将主机更改为127.0.0.1,还尝试放置服务器的ip。它没有帮助我。 我想念什么吗?

我的错误:

  

SQLSTATE [HY000] [1045]用户'root'@'localhost'的访问被拒绝(使用密码:NO)(SQL:从users中选择count(*)作为聚合,其中email = user.email@gmail.com)

9 个答案:

答案 0 :(得分:3)

问题在于,必须删除项目中创建的缓存文件'config.php',以允许系统重新启动,您可以通过访问此文件并将其删除

bootstrap / cache / config.php

答案 1 :(得分:2)

说实话,在laravel 6上工作时,我也多次遇到此问题,可能无法找出我尝试过的命令的解决方案 php artisan config:cachephp artisan config:clear,但这两个命令没有帮助。

要解决此问题,您必须执行以下所有命令:

php artisan route:cache
php attisan route:clear
php artisan config:cache
php artisan config:clear
php artisan optimize

注意:请确保在.env中放置了db_password并且它不为null,并且还要检查您的db_password是否使用任何特殊字符,始终将它们放在""中< / p>

示例:

DB_PASSWORD="%123456%"

要调试此问题,您还可以创建一个测试路由,然后在其中转储.env变量以检查它们是否具有正确的值?

Route::get('/test/env', function () {
    dd(env('DB_DATABASE')); // dump db variable value one by one
});

希望有帮助。

谢谢

注意:请确保重新启动服务器。

答案 2 :(得分:2)

确保正确设置了数据库凭据和数据库主机:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE="your_database_name"
DB_USERNAME="put_db_user_name _here"
DB_PASSWORD="put_db_password_here_if_have_set"

如果您尚未设置任何数据库密码,请输入

DB_PASSWORD=""

答案 3 :(得分:1)

所以,问题出在我的身上。我对此表示歉意。 我错过了将DB_PASSWROD放在""中的想法。 所以,这导致了我两个小时。 我的密码开头包含一些特殊字符。 因此,它应该位于""内部,以避免出现问题。 例如,如果我的密码是"%helloworld@", 然后在.env文件中,它应该是

`DB_PASSWORD="%helloworld@" `

以前,我有

`DB_PASSWORD=%helloworld@

答案 4 :(得分:1)

我正在使用Homestead在Laravel框架中工作,并遇到了此类问题。实际上,此错误是因为我没有在流浪汉中创建数据库。因此,我创建了数据库。详细信息:

1-运行vagrant ssh以获得Homestead命令行。

2-运行mysql以获得mysql命令行。

3运行create database database_name;创建数据库。请注意,数据库应位于两个`(Not')标记之内。

4-修改laravel项目的.env文件,如下所示:

DB_CONNECTION=mysql
DB_HOST=192.168.10.10
DB_PORT=3306
DB_DATABASE=askidb2
DB_USERNAME=homestead
DB_PASSWORD=secret

5-(如果您以前在laravel项目中创建了模型并配置了用于创建表的文件),则在projects文件夹的命令行中运行php artisan migrate。这将导致在askidb2数据库中创建表。

6-(可能对您来说是可选的),因为在我设置用于播种问题表所需的文件之前,我只是运行php artisan db:seed来播种所需的表。

答案 5 :(得分:1)

与数据库建立连接时出现此错误,问题是我在本地主机而不是127.0.0.1

答案 6 :(得分:0)

第一次

DB_DATABASE="your_database_name"
DB_USERNAME="put_db_user_name _here"
DB_PASSWORD="put_db_password_here_if_have_set"

然后输入

php artisan config:clear

这将使您的问题变得清晰。然后输入

php artisan migrate

答案 7 :(得分:0)

如果您使用 homestead 为您的应用程序提供服务,则必须连接到 homestead 内置数据库。否则,当我尝试连接到安装在我的 Mac 上的 MySQL 数据库时,我会收到错误 (SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost')。

这是我如何连接到 homestead 数据库。不知道为什么主机 → 来自幼虫文档的 127.0.0.1 不起作用。

在 .env 文件中

DB_CONNECTION=mysql
DB_HOST=192.168.10.10
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=homestead
DB_PASSWORD=secret

我使用 Sequel Pro 作为 GUI 来管理数据库,这里是我如何将 Sequel Pro 连接到 Homestead MySQL 数据库。

使用标准模式连接

主机:192.168.10.10
用户:宅基地
密码:secret
端口:3306

使用 SSH 模式连接

enter image description here

答案 8 :(得分:-1)

就我而言,如果您有bitnami wordpress。它的服务使用Apache / localhost地址,因此我的xampp仅可通过127.0.0.1访问,访问localhost时出现“访问被拒绝错误...”。然后,当我停止bitnami服务时,一切恢复正常。