为什么Laravel中的.env文件配置无法生效

7
DB_CONNECTION=mysql      
DB_HOST=127.0.0.1     
DB_PORT=3306     
DB_DATABASE=
DB_USERNAME=root     
DB_PASSWORD=   

这是我的Laravel 5.4配置,但是php artisan migrate命令无法正常工作并且出现了错误,具体错误信息如下:

Users-MacBook-Pro: ATP Developers php artisan migrate

In Connection.php line 664: 
SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO) (SQL: select * from information_schema.tables where table schema = atp_db and table_name = migrations)

In Connector.php line 87:
SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO)

3
请勿以图片形式发布错误信息,这样会造成无法阅读的情况。 - klh
添加数据库名称 DB_DATABASE=database_name 并为 phpmyadmin 提供密码 DB_PASSWORD=your_password - Sohel0415
你检查过你的根数据库是否设置了密码吗?错误提示说你的凭据不正确。就这些。 - Imran
谢谢,但是凭据没问题,没有密码,用户是root,但是仍然存在这个问题。 - Najib jamshidi
数据库连接应该使用Artisan提供并清晰配置。 - Elby
8个回答

5

2

您应该编写以下内容:

DB_DATABASE = your database name
DB_USERNAME = root     
DB_PASSWORD = your password

再次运行php artisan serve以确保保存.env,然后再次运行php artisan migrate


1

实际上我也遇到了同样的问题,我无法解释为什么 Laravel 指示旧主机,但解决方法是更改密码。

使用以下命令 => php artisan config:cache


在我更改连接密码后,我遇到了这个问题,“php artisan config:cache”解决了我的问题。 - CJ Edgerton

0

这个错误提示说明在你的.env文件中没有配置数据库用户:''@'localhost'。在运行任何连接到数据库的函数之前,你的.env文件应该填写所有这些字段的数据库名称和凭据。

以下是在运行php artisan migrate之前设置数据库和.env文件的初步步骤:

希望它能有所帮助。

第一步:登录到你的mysql并创建数据库。

mysql -u root -p
create database just_brew_it;

步骤2:虽然你可以使用root通过laravel进行身份验证,但我会创建一个新用户来减轻任何安全问题的风险:

GRANT ALL PRIVILEGES ON just_brew_it.* TO 'brew_user'@'%' identified by 'pint0fStell@' WITH GRANT OPTION;
FLUSH privileges;

步骤三: 使用适当的数据库、用户名和密码修改您的.env文件

DB_CONNECTION=mysql      
DB_HOST=127.0.0.1     
DB_PORT=3306     
DB_DATABASE= just_brew_it
DB_USERNAME= brew_user
DB_PASSWORD= pint0fStell@

@Najibjamshidi,你是否已经在.env文件中配置了数据库名称、用户名和密码,并使用这些信息登录到了数据库? - Dom DaFonte
让我们在聊天中继续这个讨论 - Najib jamshidi
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=atp_db DB_USERNAME=root DB_PASSWORD=(密码) - Najib jamshidi
你的意思是为我的数据库分配一个密码吗? - Najib jamshidi
正确。为连接到您的数据库的用户分配密码。通常在安装完数据库后,我会运行mysql_secure_installation以避免您刚刚遇到的问题。我还为每个Laravel实例创建一个服务帐户,以确保更安全和可扩展的环境。 - Dom DaFonte
显示剩余6条评论

0

这个组合对我很有效:

php artisan clear-compiled 
composer dump-autoload
php artisan optimize

0

将环境主机条目更改为DB_HOST=localhost。或者将@'127.0.0.1'凭据添加到mysql中。


我已经设置了(db_host=localhost),但是仍然无法迁移并在顶部显示此错误。 - Najib jamshidi

0
该错误表明您的数据库中没有正确的用户和主机组合。env文件显示主机为127.0.0.1,但错误中指定了localhost。请向数据库添加user@localhost条目或使用通配符user@%。

-1

我曾经遇到过同样的问题,即使使用Artisan :: call('config:cache')也无法运行“config:cache”工匠命令。

所以我做了这个并解决了我的问题:

artisan config:cache将/config中的所有文件缓存到一个单独的数组中,并将其存储。然后从该数组中读取所有配置变量,并忽略.env或/config文件中的任何内容,直到您重新缓存它们。这就是为什么在删除.env后它仍然有效的原因。

https://laravel.com/docs/5.6/configuration#configuration-caching

如果您没有SSH访问您的生产服务器,您只需要删除bootstrap/cache/config.php文件,这是config:cache生成的缓存文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接