php artisan migrate - SQLSTATE [HY000] [1045]访问被拒绝用户'laravel'@'localhost'

Mat*_*Som 3 php laravel laravel-5.4

我想按照这个课程设置和学习laravel:https://laracasts.com/series/laravel-from-scratch-2017/episodes/4

当我尝试使用该命令时,php artisan migrate我收到此错误:

[Illuminate\Database\QueryException]                                                                                                        
  SQLSTATE[HY000] [1045] Access denied for user 'laravel'@'localhost' (using password: NO) (SQL: select * from information_schema.tables whe  
  re table_schema = laravel and table_name = migrations)

[PDOException]                                                                            
  SQLSTATE[HY000] [1045] Access denied for user 'laravel'@'localhost' (using password: NO)
Run Code Online (Sandbox Code Playgroud)

试图寻找答案,我想我可能会对.env文件进行一些更改,但不知道到底是什么,到目前为止还没有任何工作.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=
Run Code Online (Sandbox Code Playgroud)

我在视频中使用Ubuntu 16.04而不是Mac OS X,所以我想知道我该怎么办?有没有我没做过的mysql设置?

小智 20

如果您尝试使用 homestead 运行此命令,则需要确保将.env文件中的以下环境变量的值更改为:

DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Run Code Online (Sandbox Code Playgroud)

更改值后,请确保在执行任何其他操作之前运行以下两个命令:

php artisan config:clear
php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)

  • 对于任何使用 Laravel 7、homestead 和 mysql 8+ 的人来说——这就是解决方案! (2认同)

小智 20

如果您的 DB_PASSWORD 包含 # 符号,则将其像这样括起来

DB_PASSWORD="dfdf#523"
Run Code Online (Sandbox Code Playgroud)


Myc*_*ect 8

我的plesk ubuntu 18.04远程服务器存在相同的问题。在您的.ENV文件放在双引号围绕您的数据库用户名和密码,然后运行php artisan config:clearphp artisan cache:clear

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME="xyz"    
DB_PASSWORD="123"
Run Code Online (Sandbox Code Playgroud)

我以前从未遇到过这个问题。


Yas*_*nes 7

您没有名为"laravel"的用户.您应该将DB_USERNAME更改为您实际用于访问数据库的DB_USERNAME.默认情况下它通常是root,因此.env中的更改应该是

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
Run Code Online (Sandbox Code Playgroud)


小智 7

如果您使用 MAMP 和默认 root 用户名/pw,您的 .env 文件数据库配置应使用“localhost”而不是 127.0.0.1 和“root”作为用户名和密码:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
Run Code Online (Sandbox Code Playgroud)


Poo*_*and 7

在我的情况下,它解决了 usinglocalhost而不是127.0.0.1


小智 7

面临同样的问题。使用更新了我在 mysql 中的 root 密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '.....'
Run Code Online (Sandbox Code Playgroud)

其中更新的密码没有特殊字符“#”。在 .env 文件中更新它。php artisan migrate然后在终端成功运行。