2016-09-13 77 views
2

我在我的Macbook Air(OS X版本10.11.2)上創建了一個新用戶。新用戶擁有完整的管理員權限。我正在使用MAMP。 MySQL端口設置爲3306.我可以連接到MySQL,其他一切都很好。我所有的Laravel項目都停止連接到MySQL。當我嘗試使用Laravel 5.3不會連接到mysql

php artisan migrate 

我得到:

[PDOException]        
SQLSTATE[HY000] [2002] Connection refused 

這裏是我的.ENV的數據庫部分:

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=store 
DB_USERNAME=clerk 
DB_PASSWORD=inventory 

我已經使用root用戶名和密碼嘗試。我嘗試過使用不同的端口。我嘗試將主機切換到本地主機。我已驗證用戶名和密碼是否正確,並且用戶有權訪問數據庫。 這裏是我的config/database.php中文件的MySQL的部分:

'mysql' => [ 
    'driver' => 'mysql', 
    'host' => env('DB_HOST', '127.0.0.1'), 
    'port' => env('DB_PORT', '3306'), 
    'database' => env('DB_DATABASE', 'store'), 
    'username' => env('DB_USERNAME', 'clerk'), 
    'password' => env('DB_PASSWORD', 'inventory'), 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
    'strict' => true, 
    'engine' => null, 
], 

我一直在尋找了幾天,我似乎無法找到答案。我的舊Laravel 5.2項目也不會連接。我很確定這是由於創建一個新用戶而引起的,但我對MySQL的瞭解不足以找出問題所在。

+0

你可以連接'mysql'命令行工具或MySQL Workbench程序或同等功能嗎?你嘗試過使用'localhost'而不是'127.0.0.1'嗎? – tadman

+0

@tadman |我在原帖中回答了這兩個問題。 –

+1

連接拒絕意味着mysql沒有運行,或者不在監聽。這意味着用戶/密碼在這個階段是不相關的。你甚至沒有連接到MySQL的TRY並登錄。如果這是一個權限的話,你會得到「訪問被拒絕」 –

回答

0

在按照我的建議在您的問題下面的評論中提到的故障排除流程後,所有內容都應按預期工作。

如果情況並非如此,那麼您一定會錯過一些東西; ......我猜想的一個PATH問題。

我建議你export your database,卸載你的MySQL,然後在here下載一個新的。

按照方法詳述here尋找可能的修復方法。

有了這個,你的挑戰肯定會得到解決。

0

試着改變你的DB_HOST =本地主機:3306

0

您定義engine = null。據我所知,引擎在MySqlGrammar.php內部特別用於編譯創建查詢。我只看到了VIEWS的空引擎。

嘗試以下配置:

'mysql' => [ 
    'driver' => 'mysql', 
    'host' => env('DB_HOST', '127.0.0.1'), 
    'port' => env('DB_PORT', '3306'), 
    'database' => env('DB_DATABASE', 'store'), 
    'username' => env('DB_USERNAME', 'clerk'), 
    'password' => env('DB_PASSWORD', 'inventory'), 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
], 

你沒有提到它在你的問題,並把它從一個終端

mysql -uclerk -pinventory -h127.0.0.1 -P3306 store 

以下作品會不會是它需要

mysql -uclerk -pinventory -hlocalhost -P3306 store 

你可以在你的項目中檢查一個info.php文件ct再次檢查一下,將PDO作爲模塊的參考,看起來一切正常。

<?php 
phpinfo(); 

然後還可以玩一下PDO php腳本,看看你的連接是否正常工作。喜歡的東西:

<?php 
$servername = "127.0.0.1"; 
$username = "clerk"; 
$password = "inventory"; 

try { 
    $conn = new PDO("mysql:host=$servername;port=3306;dbname=store;", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    echo "Connected successfully"; 
} catch (PDOException $e) { 
    echo "Connection failed: " . $e->getMessage(); 
} 

別的東西,你也可以檢查一個虛擬的路線是什麼env('DB_DATABASE')等給你裏面。

更新的東西檢查2016.09。15

若要確保env()被獲取正確的信息包括下面的路線,然後包括以下的輸出:

Route::get('dbtest', function() { 
    $config = [ 
     'host' => env('DB_HOST'), 
     'port' => env('DB_PORT'), 
     'database' => env('DB_DATABASE'), 
     'username' => env('DB_USERNAME'), 
     'password' => env('DB_PASSWORD'), 
    ]; 
    dd($config); 
}); 

然後還訪問mysql作爲根用戶和包括的輸出select語句:

mysql> select host, user, password, authentication_string, password_expired from mysql.user; 

當你使用MAMP請務必從/Applications/MAMP/Library/bin/mysql

使用mysql命令行工具
+0

試過你的建議:mysql-cores -pinventory -hlocalhost -P3306商店工作正常。 PDO腳本也工作得很好。 –

+0

如果-hlocalhost工作,那麼您需要將.env文件中的DB_HOST從127.0.0.1更新到localhost。我添加了兩個其他的東西,你可以檢查。 –

0

它已經解決了。幾小時後,我決定採取@nyedidikeke的建議,並重新安裝MySQL。我正在使用MAMP,我一直想停止使用它一段時間。我卸載了它,並通過Homebrew安裝了mysql。一切都很好,謝謝你的幫助!