2016-02-04 106 views
1

我試圖按照本指南: https://laravel.com/docs/5.2/quickstart用PHP工匠Laravel錯誤遷移

我在AWS上運行Ubuntu 14.04。我正在使用laravel 5.2。我對laravel很陌生(對於這個問題也很關注),我已經完成了指南中的所有內容,並得到了這個錯誤。

當我運行:

php artisan migrate

我得到以下錯誤:

[PDOException]

SQLSTATE[28000] [1045] Access denied for user 'homestead'@'localhost' (usin g password: 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指定的宅基地=數據庫。我應該爲我不使用宅基地從宅基地改變:/

的DB_USERNAME是我們用來登錄到MySQL所以

DB_USERNAME = root 

相同的用戶名當密碼是我們使用相同的密碼登錄到MySQL。

這可能似乎都很明顯,但我是新的,不知道。它也沒有在Laravel網站的快速入門指南中介紹。也許我沒有準確地遵循它,如果是的話,讓我知道。

乾杯

+0

您是否已經在AWS上安裝MySQL? – enriqg9

+0

我輸入了mysql --version並得到:mysql Ver 14.14 Distrib 5.5.46,對於使用readline的debian-linux-gnu(x86_64)6.3 –

+0

什麼是DB_DATABASE,DB_USERNAME,DB_PASSWORD,數據庫是否會自動使用這些憑證創建?或者我必須手動執行它? DB_PASSWORD是否意味着我用來登錄到mysql的密碼?我使用以下命令登錄到mysql:「mysql -u root -p」<然後我輸入密碼>。這個密碼應該和DB_PASSWORD一樣嗎? –

回答

3

正如我所說,你需要通過終端mysql -u root -p,其中root是MySQL用戶,然後輸入你的密碼登錄到MySQL,那麼就創建一個使用SQL CREATE DATABASE my_db;其中my_db是數據庫名稱,最後只是更新數據庫您的.env文件與您的數據庫和憑據。

-2

您需要更新與正確的憑據.ENV文件,例如

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

正確連接數據庫。如果您之前尚未創建數據庫,則可以通過PHPMyAdmin創建它。

+1

Laravel設置爲使用.ENV文件的位置,或默認爲database.php文件。你應該**從不**在你的database.php中設置這些。 – Derek

+0

**從不??? ???做一些研究。 Laravel從未限制你不使用自己的數據庫。 –

+2

@OliverQueen是對的。你不應該直接編輯你的database.php文件中的值,因爲你的憑證會在你的倉庫中結束。你應該總是使用env變量。您可以將它們設置在.env或服務器env設置中。在這種情況下,粗體是值得的。 – jfadich