Ошибка "Connection refused" в Laravel при подключении к MySQL может возникать по нескольким причинам, связанным с конфигурацией вашего сервера и сетью. Рассмотрим несколько возможных причин и решений вашей проблемы.
### Причины и решения
1. **Неверные параметры подключения**:
- Проверьте параметры подключения к базе данных в вашем `.env` файле:
```plaintext
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ваша_база_данных
DB_USERNAME=ваш_пользователь
DB_PASSWORD=ваш_пароль
```
- Убедитесь, что `DB_DATABASE`, `DB_USERNAME` и `DB_PASSWORD` корректны.
2. **Разные контексты запуска**:
- Если ваш основной сайт и API работают на разных серверах или контейнерах, и вы используете `DB_HOST=127.0.0.1`, это будет корректно только для одного из них, так как `127.0.0.1` указывает на локальный адрес текущей машины. Попробуйте использовать IP-адрес локальной сети или имя хоста другого контейнера.
- Например, если сервер базы данных находится на одной машине (или в Docker-контейнере), используйте вместо `127.0.0.1` внутренний IP или имя контейнера.
3. **Настройки MySQL**:
- Убедитесь, что MySQL настроен на прослушивание входящих соединений. Откройте файл конфигурации MySQL (обычно это `my.cnf` или `my.ini`), и проверьте параметр:
```ini
bind-address = 0.0.0.0
```
- Это позволит MySQL принимать соединения не только от `localhost`, но и от других IP.
4. **Файрвол и права доступа**:
- Проверьте настройки файрвола (например, iptables или ufw) и убедитесь, что порт 3306 (или другой, если используется) открыт для входящих соединений.
- Убедитесь, что пользователь MySQL имеет права на подключение извне:
```sql
GRANT ALL PRIVILEGES ON ваша_база_данных.* TO 'ваш_пользователь'@'%' IDENTIFIED BY 'ваш_пароль';
FLUSH PRIVILEGES;
```
5. **Перезапуск сервисов**:
- После внесения изменений в `.env` файл, убедитесь, что вы выполняете команду:
```bash
php artisan config:cache
```
- Это обновит настройки конфигурации приложения.
6. **Логи ошибок**:
- Проверьте логи ошибок вашего приложения и MySQL, чтобы выявить более подробные сведения о том, почему происходит ошибка подключения.
### Неполадки с хилыми настройками
Если вы обнаружили, что API и основной сайт работают только с различными настройками для `DB_HOST`, это может указывать на проблему с архитектурой вашей системы. Возможно, у вас разные среды разработки (например, локальная и удалённая). В этом случае стоит выяснить, как они настроены и, возможно, использовать единую базу данных, чтобы избежать такого рода проблем.
Если после всех проверок проблема не решится, возможно, потребуется более детально изучить конфигурацию сети, архитектуры и настройки вашего окружения.