PHP工匠返回Laravel中数据库连接被拒绝的访问权限

时间:2019-06-30 20:01:52

标签: php laravel artisan

我基于moving Laravel project between computers转移了一个Laravel项目
乍一看一切都很好。我可以毫无问题地安装作曲器,然后在.env中设置环境变量,例如数据库名称,数据库用户等。


当我开始使用以下命令时,

php artisan cache: clear

我遇到了这两个错误,

  

在Connection.php第664行中:   
  SQLSTATE [HY000] [1045]用户'root'@'localhost'的访问被拒绝(使用密码:是)(SQL:从information_schema.tables中选择*,其中tabale_schema = ***和table_name = ****)

     

在Connector.php第67行中:   
  SQLSTATE [HY000] [1045]用户'root'@'localhost'的访问被拒绝(使用密码:是)

其他信息:

  1. 该应用程序似乎未读取.env,因为当我浏览该应用程序的主页时,出现Whoops错误,表明环境变量为空。empty var
  2. 我测试了数据库连接,例如用户名,密码和其他参数,我知道它们可以正常工作。

最后,我附上一张照片以详细说明问题。issue

  1. 有趣的是,在我的.env文件中,DB_DATABASE的值为“ nlp”,而DB_USERNAME的值为“ Javad”,但正如您在错误中所看到的那样,它们无法正常工作,Artisan假定用户是root用户!

3 个答案:

答案 0 :(得分:0)

将Laravel项目移动到另一个位置后,要做的第一件事是通过从应用程序根目录运行命令来重新生成APP_KEY文件中的.env

php artisan key:generate

然后,您重新配置缓存:

php artisan config:cache

此外,请确保.env文件和config/database.php中的所有数据库参数均正确,并且与以前的Laravel设置相同-您可以手动更改它们,然后重新配置缓存,如上所示。如果没有更改(例如,数据库名称已更改),则可能必须重新运行数据库迁移和种子服务器:

php artisan migrate

php artisan db:seed

答案 1 :(得分:0)

考虑到您使用的是apache,我认为apache用户无法写入配置文件。确保您已授予用户引导/缓存的写权限。该目录包含已缓存的配置文件。如果是这种情况,则将从此处加载祝贺,并加载您以前使用的配置,这可能会导致问题。

此外,您还需要授予对存储目录的写许可权。因为有日志文件,所以apache用户也需要在上面写。

答案 2 :(得分:0)

打开.env文件并进行编辑。只需设置正确的数据库凭据即可:

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=            // Your Database Name
DB_USERNAME=           // Your Database Username, If no username has been set then by default there is a root as a username
DB_PASSWORD=          // Your Database Password, If no password is set on the database, clear it  

完成.env编辑后,请在您的终端中输入以下命令以清除缓存:

php artisan config:cache

如果仍然存在相同的错误,请尝试其他可能的解决方案。

我也遇到过同样的问题,我在StackOverflow中尝试了所有可能的答案,但没有任何帮助,此解决方案在第一次尝试时起作用:

如果您使用的是PHP的默认Web服务器(例如php artisan serve),则需要在更改.env文件值后重新启动服务器。

我从这里laravel.io找到了这个解决方案(请阅读Byjml的解决方案)