SQLSTATE[HY000] [2002] Отказано в подключении в пределах усадьбы Laravel


Использование Mac OS X и Homestead 2.2.1 с Laravel 5.2.

В терминале (в пределах усадьбы в папке моего проекта) Я могу сделать php artisan, чтобы увидеть все доступные команды. Когда я пытаюсь запустить php artisan migrate, я получаю сообщение об ошибке подключения:
SQLSTATE[HY000] [2002] Connection refused


Я настроил проект Laravel с этими .env настройками

DB_HOST=127.0.0.1
DB_DATABASE=tcv
DB_USERNAME=homestead
DB_PASSWORD=secret

Я также пробовал локальный хост для DB_HOST и корневой для DB_USERNAME и DB_PASSWORD. И все возможные вариации этих вместе взятых!


В Sequel Pro (приложение для управления БД) я МОГУ подключиться к этим настройкам

Host       127.0.0.1
Username   homestead
Password   secret
Database   tcv
Port       33060

Но эта база данных явно пуста, потому что я не могу перейти к ней с терминала...

Насколько я могу понять, это проблема конфигурации, так как я могу подключиться к ней с помощью Sequel Pro. Но, честно говоря, я понятия не имею, что не так с настройкой.

Спасибо за помощь!!

РЕДАКТИРОВАТЬ
По какой-то причине я получаю то же самое SQLSTATE[HY000] [2002] Connection refused ошибка при переносе моего проекта в MAMP и запуске миграции php artisan.
Теперь я совершенно потерян...

Author: nclsvh, 2016-02-14

13 answers

Проблема

В Laravel у вас есть config/database.php, где расположены все настройки для подключения. У вас также есть файл .env в корневом каталоге вашего проекта (который все используют для экономии времени). Он содержит переменные, которые вы можете использовать для всего проекта.

В стандартном проекте L5 раздел MySQL config/database.php выглядит так:

    '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,
    ],

Обратите внимание, что порт не установлен!

Хотя в моем файле .env я установил DB_PORT=33060. Но это value (3306) никогда не было прочитано в config/database.php.
Так что не будь таким тупицей, как я, и забудь проверить файл database.php.


ИСПРАВИТЬ
Просто добавьте 'port' => env('DB_PORT', 3306), в свой config/database.php и установите это значение в .env вот так DB_PORT=33060
 29
Author: nclsvh, 2017-10-02 21:35:39

Я только что столкнулся с этим и обнаружил, что изменение этого в файле .env с 127.0.0.1 на localhost исправило это.

DB_HOST=локальный хост

 23
Author: Richard Hood, 2017-11-12 23:00:06

У меня была такая проблема. При подключении к Sequel Pro мне нужно использовать 33060 в качестве порта, но в файле .env он должен быть 3306. У меня было 33060 в файле .env. Изменил его на 3306, и это сработало.

 5
Author: Tom Kincaid, 2017-03-29 19:14:07

Если вы используете MAMP в mac OS, добавьте следующую строку в файл конфигурации базы данных mysql

'unix_socket' => env('DB_SOCKET', ''),

И в свой файл .env добавьте

DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
 5
Author: Albert A, 2018-06-26 02:37:51

У меня была та же проблема, попробуйте это работает

DB_HOST=localhost
 3
Author: Diego Santa Cruz Mendezú, 2018-05-21 21:12:36

Это простое решение. Ваша база данных mysql потеряла соединение с сервером. Если вы используете локальный сервер, запустите это в своем терминале:

mysqld

Это приведет к повторному подключению вашей базы данных. Затем (если вы используете homebrew) запустите:

brew services start mysql

Это автоматически подключит вашу базу данных при входе в систему.

 3
Author: SouthernBoy, 2018-06-05 22:05:58

Используйте localhost вместо 127.0.0.1 (в вашем файле .env), затем выполните команду "конфигурация php artisan: кэш"

 3
Author: Lode Alaert, 2018-08-13 06:50:25

В моем случае эта ошибка появилась как гром среди ясного неба. Глядя на эту загадочную ошибку, я понял, что пытался запустить команду за пределами виртуальной машины...

 2
Author: Radik Nurgaliev, 2018-01-08 10:02:18

Возможно, что ваш 'mysql' не запущен или не подключен к порту '3306'

 1
Author: gxet4n, 2017-08-10 13:38:29

Еще одно решение для всех, у кого есть проблемы. У меня были правильные настройки, но по какой-то причине мои изменения не были обновлены. Laravel на самом деле кэширует конфигурационный файл (что я нахожу совершенно глупым).

Вот мое решение после обновления конфигураций:

php artisan config:clear

 1
Author: xtrimsky, 2018-01-27 18:17:42

Если вы используете Homestead, то вы должны запускать его с портом mysql по умолчанию. Поэтому вместо использования DB_PORT=33060 вы должны использовать DB_PORT=3306 в своем файле .env. Кроме того, не забудьте выполнить ваши команды php artisan migrate в вашей установке homestead, и все должно быть в порядке.

Надеюсь, это поможет.

 0
Author: Lamin Barrow, 2018-03-08 18:52:56

Единственное, что решило эту проблему для меня, - это указать детали подключения в config/database.php вместо файла .env. Надеюсь, это поможет

 0
Author: Maxime Barber, 2018-10-02 14:38:34

Внутри config/database.php поместите все конфигурации вместо того, чтобы оставлять.env. Вся функция env() будет заменена необработанным текстом. Вот так:

<pre>
    'mysql' => [
        'driver' => 'mysql',
        'host' => '127.0.0.1',
        'port' => '3306',
        'database' => 'database_name',
        'username' => 'username',
        'password' => 'password',
        'unix_socket' => '',
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],
</pre>
 0
Author: Emmanuel de Carvalho Garcia, 2018-10-05 17:30:59