2017-07-07 156 views
2

我建立了一個名爲cms的數據庫,如果我以root用戶身份登錄我可以連接到該數據庫,並且我可以很好地操縱數據庫。我也可以連接MySQL Workbench。但是,當涉及到通過Laravel 5.4進行連接時,它不會讓我連接到MySQL來運行遷移。我在我的.env文件中擁有與我在MySQL Workbench中相同的憑據,但仍然沒有連接。有任何想法嗎?從Laravel連接到MySQL

下面是我在我的.env文件

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=cms 
DB_USERNAME=root 
DB_PASSWORD= 
+0

你得到的錯誤是什麼? – ceejayoz

+0

'[PDOException] SQLSTATE [HY000] [2002]由於目標機器主動拒絕它,因此無法建立連接。「 – jesders88

+0

如果您使用Homestead,請檢查此項:https://stackoverflow.com/questions/32514241/php-laravel -no-connection-could-be-made-because-the-target-machine-active-ref – dipoisola

回答

3

通過SSH,你可以連接到MySQL作爲根沒有密碼,因爲這是默認行爲。它允許本地Linux root用戶在MySQL上以無密碼登錄爲root

當你不想在本地連接(通過SSH),而是通過TCP/IP或使用PHP mysql庫的套接字連接時,那麼你需要爲此設置一個用戶。

這裏是如何做到這一點:

1)通過SSH登錄,你通常做的,具有root訪問權限的MySQL

2)創建一個用戶:

CREATE USER 'laravel'@'%' IDENTIFIED BY 'ENTER-PASSWORD-HERE'; 

3)在數據庫上爲該用戶授予權限:

GRANT ALL PRIVILEGES ON cms.* TO 'laravel'@'%'; 

4)刷新權限以便一切重裝:

FLUSH PRIVILEGES; 

5)現在退出SSH和編輯.ENV文件是這樣的:

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=cms 
DB_USERNAME=laravel 
DB_PASSWORD=ENTER-PASSWORD-HERE 

當然,請更改佔位符 「ENTER密碼-HERE」 個人喜好的東西。

您現在應該能夠從您的應用程序進行連接。

+0

完美。我可以通過ssh連接,所以這看起來像它會做的伎倆。 – jesders88

+0

很高興它:) – Cyril

+0

更正, 由於某種原因,我仍然有同樣的問題。 '[Illuminate \ Database \ QueryException] SQLSTATE [HY000] [2002]由於目標計算機主動拒絕它,因此無法建立連接。 :' '[PDOException] SQLSTATE [HY000]無連接可以作出[2002]由於目標機器積極拒絕it.' – jesders88