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

时间:2017-04-02 14:02:55

标签: 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)

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

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=

我在视频中使用Ubuntu 16.04而不是Mac OS X,所以我想知道我应该采取哪些不同的做法?有没有我没做过的mysql设置?

20 个答案:

答案 0 :(得分:5)

您没有名为'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=

答案 1 :(得分:2)

如果您使用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

答案 2 :(得分:2)

我遇到这样的情况,服务器没有看到更新的.env文件,php artisan cache:clear并没有帮助,但是只是需要刷新服务器php artisan serve

答案 3 :(得分:2)

我有同样的问题。最终对我有用的是表演Method 2 on this page

在我的奋斗中,我了解到可以在4个不同的地方为XAMPP随附的MySQL安装的root设置密码。仅在这些位置中的1或2个位置设置密码是不够的。这是我执行初始迁移所要做的:

  1. 在Laravel .env文件的DB_...部分中。
  2. localhost:[your Apache port]/phpmyadmin中,通过用户帐户->根->编辑权限->更改密码。
  3. localhost:[your Apache port]/phpmyadmin中,通过Method 2 on this page中所述的方法。
  4. 在您的config.inc.php文件中,对我来说(在MacOS上)在/Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.php中。 Method 2 on this page中也描述了此方法。

然后重新启动MySQL和您的Web(Apache)服务器

请注意,在成功统一密码并再次尝试进行迁移之后,可能会收到错误输出,该错误输出看起来几乎与“拒绝访问密码”错误相同。但是,这是与字符串长度有关的不同错误。 See here for how to fix that issue.

答案 4 :(得分:2)

遇到同样的问题。使用

在mysql中更新了我的root密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '.....'

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

答案 5 :(得分:1)

当我遇到这个问题时,是因为我忘记了我的本地环境是在3306以外的端口上运行mysql。对我来说,它是3307.如果你使用的是XAMPP,我会查看你正在使用的端口和制作确保它与.env文件匹配。

答案 6 :(得分:1)

步骤1:在phpmyadmin中添加一个新用户。例如:username-xyz,密码123

第2步:创建一个新数据库,例如:dbname

第3步:像这样更新您的.env文件:

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=dbname
    DB_USERNAME=xyz    
    DB_PASSWORD=123

步骤4:现在清除缓存“ php artisan clear:cache”

第5步:最后尝试使用“ php artisan migration”迁移表

答案 7 :(得分:1)

如果您在MAMP上,请同时检查您的端口号。通常,它应如下所示:

Host    localhost
Port    8889
User    root
Password    root
Socket  /Applications/MAMP/tmp/mysql/mysql.sock

答案 8 :(得分:1)

我的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"

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

答案 9 :(得分:1)

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

DB_PASSWORD="dfdf#523"

答案 10 :(得分:0)

对我来说,问题是通过在用户和密码字段中添加 '' 来解决的,如下所示:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=someCoolDatabaseName
DB_USERNAME='someCoolUsername'
DB_PASSWORD='someCoolPassword'

确保您可以使用 mysql -u root -p 通过 CMD 登录并成功登录。

答案 11 :(得分:0)

如果设置了PHPMyAdmin密码,则需要在.ENV文件上进行类似的设置

DB_CONNECTION=mysql
DB_PORT=3306
DB_HOST=localhost
DB_DATABASE=db_name
DB_USERNAME=root
DB_PASSWORD=root

如果未设置密码,则可以将DB_PASSWORD保留为空白 DB_PASSWORD =

两者都仍然无法正常工作,然后它会缓存问题以进行修复,您需要删除位于bootstart / cache / config.php中的配置文件 那个php artisan config之后:缓存工作并自动生成相同的文件

答案 12 :(得分:0)

打开 config / database.php 并在此处添加密码:

'mysql' => [
...,
'password' => ''
...])

答案 13 :(得分:0)

我也有这样的问题。我创建了一个新数据库

CREATE DATABASE askiDB CHARACTER SET utf8;

然后在MySQL Workbench的导航器控制台中选择此数据库,然后在“管理角色”选项卡中选择所有“角色”。然后,在登录选项卡中设置密码。 此外,在项目的.env文件中,我正确设置了该文件的DB_USERNAME和DB_PASSWORD。 然后我执行以下命令 php artisan migration

效果很好。

答案 14 :(得分:0)

对于我来说,我只是 .env 文件中添加了用户名的密码

答案 15 :(得分:0)

您可以尝试

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=

答案 16 :(得分:0)

我也遇到了相同的错误,您可以在这里参考:

// config your host-name
APP_URL=http://test.demo

LOG_CHANNEL=stack

DB_CONNECTION=mysql
// default phpmyadmin display: localhost:3306
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=root

答案 17 :(得分:0)

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

DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

更改值后,请确保先运行以下两个命令,然后再执行其他操作:

php artisan config:clear
php artisan cache:clear

答案 18 :(得分:0)

使用localhost代替127.0.0.1 而且您走的很好!

答案 19 :(得分:0)

如果您以前使用不同的用户名和密码在phpmyadmin上建立了数据库,则您的本地主机帐户需要一个新用户来使用不同的密码。我尝试了以前使用的用户名和密码,为我解决了这个问题。