【问题标题】:Laravel error with php artisan migratephp artisan migrate的Laravel错误
【发布时间】:2016-05-14 16:45:38
【问题描述】:

我正在尝试遵循本指南: https://laravel.com/docs/5.2/quickstart

我在 aws 上运行 ubuntu 14.04。我正在使用 laravel 5.2。我是 laravel 的新手(同样也是 aws),我已经完成了指南中的所有操作并得到了这个错误。

当我跑步时:

php 工匠迁移

我收到以下错误:

[PDO异常]

SQLSTATE[28000] [1045] 拒绝用户访问 'homestead'@'localhost'(使用密码:YES)

.env 文件如下所示:

APP_ENV=local APP_DEBUG=true APP_KEY=hXP0uBJkQos3cHK7D8f6LVx2SLuLAuyv

DB_HOST=localhost 
DB_DATABASE=homestead 
DB_USERNAME=homestead 
DB_PASSWORD=secret

CACHE_DRIVER=file 
SESSION_DRIVER=file 
QUEUE_DRIVER=sync

REDIS_HOST=localhost 
REDIS_PASSWORD=null 
REDIS_PORT=6379

MAIL_DRIVER=smtp 
MAIL_HOST=mailtrap.io 
MAIL_PORT=2525 MAIL_USERNAME=null 
MAIL_PASSWORD=null MAIL_ENCRYPTION=null

编辑:好的,所以我猜这个问题是由于缺乏对 ubuntu、mysql 和 laravel 的了解。我完全按照上面链接中的指南进行操作,但我想它是为经营宅基地的人准备的。看起来在 ubuntu 服务器上您必须手动创建数据库(猜想这对大多数人来说似乎很明显)。

所以登录到mysql:

mysql -u root -p

然后在提示您输入密码时输入密码。

使用 root 可能不是一个好主意,但我只是在学习。 这里输入的密码和你在 laravel 根目录下的 .env 文件中输入的密码是一样的。

登录mysql后输入:

mysql> create database homestead;

这将创建一个与 .env 文件 DB_DATABASE=homestead 中指定的名称相同的数据库。我可能应该从宅基地改变它,因为我不使用宅基地:/

DB_USERNAME 是我们用来登录 mysql 的同一个用户名,所以

DB_USERNAME = root

虽然密码与我们登录mysql时使用的密码相同。

这可能看起来很明显,但我是新手,不知道。 laravel 网站上的快速入门指南也没有涵盖它。也许我没有准确地遵循它,如果有,请告诉我。

干杯

【问题讨论】:

  • 您是否已经在 AWS 上安装了 MySQL?
  • 我输入 mysql --version 并得到:mysql Ver 14.14 Distrib 5.5.46, for debian-linux-gnu (x86_64) using readline 6.3
  • 什么是 DB_DATABASE、DB_USERNAME、DB_PASSWORD,是否使用这些凭据自动创建数据库?还是我必须手动完成? DB_PASSWORD 是我用来登录 mysql 的密码吗?我使用以下命令登录 mysql:“mysql -u root -p”。这个密码应该和 DB_PASSWORD 一样吗?
  • mysql -u homestead -p 给我同样的错误,我如何给 homestead 登录我的数据库的权限?
  • 你能用myslq -u root -p登录mysql吗?如果您只是运行以下 SQL CREATE DATABASE my_db; 其中my_db 是您想要命名数据库的方式。

标签: php laravel ubuntu composer-php


【解决方案1】:

您需要使用正确的凭据更新 .env 文件,例如

DB_HOST=localhost 
DB_DATABASE=db_name
DB_USERNAME=db_username
DB_PASSWORD=db_password

正确连接数据库。如果之前没有创建过数据库,可以通过PHPMyAdmin创建。

【讨论】:

  • Laravel 设置为使用 .ENV 文件或默认为 database.php 文件的位置。您应该绝不在您的 database.php 中设置这些。
  • 永远不要???做一些研究。 Laravel 从不限制你不要使用自己的数据库。
  • @OliverQueen 是对的。您不应直接编辑 database.php 文件中的值,因为您的凭据最终会出现在您的存储库中。您应该始终使用环境变量。您可以在 .env 或服务器环境设置中设置它们。在这种情况下,粗体是值得的。
【解决方案2】:

正如我提到的,您需要通过终端mysql -u root -p 登录 MySQL,其中 root 是 MySQL 用户,然后输入您的密码,然后使用 SQL CREATE DATABASE my_db; 创建数据库,其中my_db 是数据库名称,最后只需使用您的数据库和凭据更新您的 .env 文件。

【讨论】:

    【解决方案3】:

    我知道您使用的是 linux 机器,但我主要是为了让 windows 用户在他们的本地机器上工作,他们将来可能会处理同样的问题。 (就像我过去一样)。

    我个人的经验是,如果您能帮助自己,请始终创建具有必要权限的新用户,而不是将 DB_USERNAME 设置为 root 用户。

    在 phpMyAdmin 用户界面上的 db 页面上的权限下,您将获得具有全局和特定于数据库访问权限的所有用户的列表。用户 sage-admin 拥有我的数据库的所有权限,如图所示: The list of all users registered with mysql

    在 laravel 的 .env 文件中,添加该用户和目标数据库的属性,它就可以工作了!

    【讨论】:

      猜你喜欢
      • 2016-10-14
      • 2018-08-04
      • 2020-10-23
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 2020-01-05
      • 2016-08-09
      相关资源
      最近更新 更多