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 访问权限的用户。
这解决了我的问题。
我遇到了和我一样的问题
- php artisan cache:clear
- 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
编辑 laravel 根目录中的 .env 文件。看起来如下所示:
DB_HOST=localhost
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=your-root-pas
同时在 phpmyadmin 中创建一个名为 "laravel" 的数据库。
运行 以下命令:
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
我已成功安装 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 访问权限的用户。 这解决了我的问题。
我遇到了和我一样的问题
- php artisan cache:clear
- 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
编辑 laravel 根目录中的 .env 文件。看起来如下所示:
DB_HOST=localhost DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=your-root-pas
同时在 phpmyadmin 中创建一个名为 "laravel" 的数据库。
运行 以下命令:
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