SQLSTATE[HY000] [2002] Connection refused within Laravel homestead
I just ran into this and found that changing this in the .env file from 127.0.0.1
to localhost
fixed it.
DB_HOST=localhost
Problem
In Laravel you have config/database.php
where all the setup for the connection is located. You also have a .env
file in the root directory in your project (which everyone uses for timesaving). This contains variables that you can use for the entire project.
On a standard L5 project the MySql section of config/database.php
looks like this:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
Notice there is no port set!
Although in my .env
file I had set DB_PORT=33060
. But that value (3306)
was never read into the config/database.php
.
So don't be a dumbass like myself and forget to check the database.php
file.
FIX
Simply add
'port' => env('DB_PORT', 3306),
to your config/database.php and set that value in .env like this DB_PORT=3306
If you are using MAMP on a mac OS add the following line to your mysql database config file
'unix_socket' => env('DB_SOCKET', ''),
and on your .env file add
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock