Sqlstate hy000 2002 connection refused что это
Перейти к содержимому

Sqlstate hy000 2002 connection refused что это

  • автор:

Laravel 8 SQLSTATE[HY000] [2002] Connection refused

Всем привет! Проблема следующая, когда пытаюсь сделать любой запрос к базе выдает ошибку SQLSTATE[HY000] [2002] Connection refused, при этом миграции работают без проблем. Пробовал менять 127.0.0.1 на localhost — ошибка остается, миграции отваливаются. Заменял на mysql, все по-прежнему, миграции не работают. Миграции работают только с DB_HOST=127.0.0.1, но при этом не работают запросы. С DB_HOST=localhost не работает ничего. Помогите кто сталкивался с подобной проблемой, недавно начал изучать Laravel, поэтому вообще понятия не имею куда копать и что еще пробовать, заранее спасибо! docker-compose.yml

# For more information: https://laravel.com/docs/sail version: '3' services: laravel.test: build: context: ./vendor/laravel/sail/runtimes/8.1 dockerfile: Dockerfile args: WWWGROUP: '$' image: sail-8.1/app extra_hosts: - 'host.docker.internal:host-gateway' ports: - '$:80' environment: WWWUSER: '$' LARAVEL_SAIL: 1 XDEBUG_MODE: '$' XDEBUG_CONFIG: '$' volumes: - '.:/var/www/html' networks: - sail depends_on: - mysql - redis - meilisearch - selenium mysql: image: mariadb:latest environment: MYSQL_ROOT_PASSWORD: '12345' MYSQL_USER: 'admin' MYSQL_PASSWORD: '12345' MYSQL_DATABASE: 'laradb' volumes: - mysqldata:/var/lib/mysql ports: - 3307:3306 phpmyadmin: image: phpmyadmin/phpmyadmin container_name: phpmyadmin1 environment: - PMA_ARBITRARY=1 restart: always ports: - 8081:80 environment: PMA_HOST: mysql redis: image: 'redis:alpine' ports: - '$:6379' volumes: - 'sailredis:/data' networks: - sail healthcheck: test: ["CMD", "redis-cli", "ping"] retries: 3 timeout: 5s meilisearch: image: 'getmeili/meilisearch:latest' platform: linux/x86_64 ports: - '$:7700' volumes: - 'sailmeilisearch:/data.ms' networks: - sail healthcheck: test: ["CMD", "wget", "--no-verbose", "--spider", "http://localhost:7700/health"] retries: 3 timeout: 5s mailhog: image: 'mailhog/mailhog:latest' ports: - '$:1025' - '$:8025' networks: - sail selenium: image: 'selenium/standalone-chrome' volumes: - '/dev/shm:/dev/shm' networks: - sail networks: sail: driver: bridge volumes: sailmysql: driver: local sailredis: driver: local sailmeilisearch: driver: local mysqldata: <> 

Мой код: .env

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3307 DB_DATABASE=laradb DB_USERNAME=root DB_PASSWORD=12345 

Проект разрабатывается в Docker на MacOS BigSur. По умолчанию на ОС чем-то забит порт 3306, поэтому использую в Докере 3307, работает с БД только так и это проверенно уже не одним проектом. Собственно миграции заработали только когда вписал 3307 (сразу просто забыл поменять), а вот запросы к БД ни с каким не работают. config/database.php

'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'laradb'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', '12345'), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], 

Также пробовал писать значение в database.php точно такие же как в .env, пробовал оставлять по умолчанию — ничего не помогло. Оставил вот так. Добавил в базу запись, пытаюсь вывести таким образом:

Route::get('/test', function ()< $posts = DB::table('posts')->get(); return $posts; >); 

Также пробовал такой вариант, чтобы добавить данный в БД,просто может не правильно вывожу и считываю, я уже ни в чем не уверен)))

DB::insert('insert into posts(title, content) values(?, ?)', ['Laravel News', 'Some text about Laravel']); 

Istio: причина и решения ошибки “SQLSTATE Connection refused”

Во время старта подов возникает ошибка “SQLSTATE[HY000] [2002] Connection refused’“, при чём в двух разных приложения – на РНР и на NodeJS.

В РHР/Yii она возникает во время выполения pre-install hook в деплое Helm и выполнении MySQL Migration Job:

Yii Migration Tool (based on Yii v2.0.38)Exception ‘yii\db\Exception’ with message ‘SQLSTATE[HY000] [2002] Connection refused’in /app/vendor/yiisoft/yii2/db/Connection.php:642Error Info:
Array
(
[0] => HY000
[1] => 2002
[2] => Connection refused
)Caused by: Exception ‘PDOException’ with message ‘SQLSTATE[HY000] [2002] Connection refused”

Причина

Причина банальна: когда мы подключаем Istio, он добавляет запуск своего sidecar-контейнера в под с приложением. При этом возможны случаи, когда контейнер istio-proxy не будет готов к работе в то время как контейнер с приложением уже запущен и начинает выполнять запросы.

Решения

В целом, Istio ожидает изменений от самого Kubenetes:

The full solution to this in Kubernetes is for k8s to support Sidecar containers as a first class concept, starting them up entirely before starting up the application container.

Но это решение пока не включено даже в 1.19, а наш AWS Elastic Kubernetes Service вообще работает на 1.18.

Тем временем, Istio 1.7 добавил своё решение:

Added config option values.global.proxy.holdApplicationUntilProxyStarts , which causes the sidecar injector to inject the sidecar at the start of the pod’s container list and configures it to block the start of all other containers until the proxy is ready.

Можно добавить глобально на уровне всего меша:

apiVersion: v1 data: mesh: |- defaultConfig: discoveryAddress: istiod.istio-system.svc:15012 proxy: holdApplicationUntilProxyStarts: true .

Или на уровне определённого пода через аннотации:

annotations: proxy.istio.io/config: '< "holdApplicationUntilProxyStarts": true >'

Кроме того, есть утилиты типа envoy-preflight – выполняет проверку istio-proxy , и только потом позволяет запустить остальные окнтейнеры в поде.

В нашем случае всё оказалось проще: istio-proxy не стартовал из-за ошибки NodeLocal DNS и ошибка «lookup istiod.istio-system.svc on lookup: no such host».

Соответственно, когда запускалось приложение и пыталось подключиться к внешнему хосту – получали Connection reset, т.к. Envoy не мог спроксировать трафик.

Почему в laravel нет доступа к БД (SQLSTATE[HY000] [2002] Connection refused)?

Здравствуйте!
Поднимаю php и mysql в docker (у меня винда), использую вот это https://github.com/drandin/docker-php-workspace
Далее:
1. Устанавливаю laravel
2. Вношу в файл .env необходимые данные для доступа к БД

Скриншот фрагмента кода удалён модератором.

f7b5605409.jpg

3. Выполняю миграции «php artisan migrate» — все нормально, таблицы в БД появились

4. Устанавливаю пакет breeze
5. Перехожу на маршрут регистрации, заполняю форму и отправляю ее.
6. Получаю ошибку «SQLSTATE[HY000] [2002] Connection refused (SQL: select count(*) as aggregate from `users` where `email` = qqq1@qqq.qq)»
7. Не понимаю что происходит, ведь миграции прошли норм. Расшарил ошибку тут https://flareapp.io/share/353Gzeo5#F67
8. Есть подозрение что это как то связано с правами доступа, но я не силен в системном администрировании linux
9. Иду на тостер, пишу это сообщение.

Может у кого-нибудь есть мысли что пошло не так?

  • Вопрос задан более года назад
  • 426 просмотров

4 комментария

Простой 4 комментария

Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

  • Форум
  • » Laravel 5.x
  • » Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

Страницы 1

#1 31.07.2015 18:23:04

VovaMark2 Сообщений: 5

Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

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

PDOException in Connector.php line 50:
SQLSTATE[HY000] [2002] Connection refused

Гугл не помог, подскажите, может быть у кого-то была подобная проблема?
Использую homestead, но еще на компьютере установлен MAMP, может быть дело в этом?

Не в сети 31.07.2015

#2 01.08.2015 04:46:07

VovaMark2 Сообщений: 5

Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

http://joxi.ru/GrqdW3ns965BAz
Так и не нашел решения, помогите пожалуйста

Не в сети 31.07.2015

#3 01.08.2015 12:11:14

fanaticus +6 Сообщений: 110

Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

Настройте конфигурацию подключения к бд в файле .env

Не в сети 23.11.2014

#4 01.08.2015 13:52:43

VovaMark2 Сообщений: 5

Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

Файл настроен, миграции проходят, но статьи не выводятся.
http://joxi.ru/zANpbxPsPXO6m9

Не в сети 31.07.2015

#5 01.08.2015 14:26:03

VovaMark2 Сообщений: 5

Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

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

Не в сети 31.07.2015

#6 01.08.2015 19:39:37

fanaticus +6 Сообщений: 110

Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

Я Вам написал, исправьте настройки в .env

DB_HOST=ХОСТ DB_DATABASE=БАЗА DB_USERNAME=ЛОГИН DB_PASSWORD=ПАРОЛЬ

и в database.php

 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'ХОСТ'), 'database' => env('DB_DATABASE', 'БАЗА'), 'username' => env('DB_USERNAME', 'ЛОГИН'), 'password' => env('DB_PASSWORD', 'ПАРОЛЬ'), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ],

Не в сети 23.11.2014

#7 01.08.2015 19:40:19

fanaticus +6 Сообщений: 110

Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

По скриншоту видно, что у вас дефолтные настройки

Не в сети 23.11.2014

#8 17.08.2015 13:31:37

vlas Сообщений: 1

Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

fanaticus пишет:

По скриншоту видно, что у вас дефолтные настройки

Нифига не дефолтные, точнее кажется что это так. порт у него какой то марсианский 33060, а так вроде ниче так дефолт 😀

Не в сети 17.08.2015

#9 04.09.2016 04:58:54

alex_whoami Откуда: Рязань Сообщений: 5 Сайт

Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

собственно кому полезно может будет.
Решение аналогичное Fanaticus.

правда машина — Мак, локалхост через Mamp.
после некоторых действий тут
http://stackoverflow.com/questions/3250 … -with-mamp
переМэйкил контроллер связанный с миграцией.

love what you doing

Не в сети 25.01.2016

#10 01.12.2018 12:39:36

ESitchikhin Сообщений: 1

Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

У меня возникла такая же проблема на MAMP. Решил просто — включил галочку в настройках MySQL. Если кому-то поможет, тут скриншот экрана, на котором нужно включить настройку http://priscree.ru/img/bc59e5a1ee0c1c.png

Не в сети 01.12.2018

#11 01.12.2018 13:08:32

writer

artoodetoo +160 Писарь Сообщений: 670 Статей: 1

Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

@VovaMark2 а не может такого быть, что миграции ты выполняешь на одной машине (виртуальной), а вебсервер работает на другой (физической)? В такм случае localhost для них разный. Лучше всего всё делать на одном и том же хосте, но если очень хочется иметь доступ отовсюду, то надо указать IP где находится сервер БД и убедиться, что настроки MySQL позволят обращаться извне.

Другая идея состоит в том, что возможно настройки нормальные, но конфигурация не обновилась из-за кеширования. Решается через
php artisan config:clear
или
php artisan config:cache

There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети 21.11.2017

#12 24.10.2021 18:33:09

SergAndreev +1 Сообщений: 10

Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

artoodetoo, спасибо!
При переносе проекта на VPS такая же ошибка была.
Помогло обновление кэш
php artisan config:cache

Не в сети 08.05.2021

#13 17.11.2022 21:18:56

nathanjohn97190 Сообщений: 1

Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused

Я запускаю laravel через docker-compose.

Мне помогло вот это

DB_HOST=mysql

Так, как в docker-compose.yml прописано services: mysql

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *