I am trying to use a PHP connection to connect MySQL Database which is on phpmyadmin. Nothing fancy about the connection just trying to see whether the connection is successful or not. I am using MAMP to host the database, the connection I am trying to use is this:
<?php
$servername = "127.0.0.1";
$username = "root";
$password = "root";
try {
$conn = new PDO("mysql:host=$servername;dbname=AppDatabase", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>
I have been using postman to test to see if the connection is working, but I keep receiving this error message:
Connection failed: SQLSTATE[HY000] [2002] Connection refused
Before I was receiving an error message of:
Connection failed: SQLSTATE[HY000] [2002] No such file or directory
This was because I had set the servername to localhost, through changing this to the IP address it has given me connection refused and I have no idea what is wrong.
Any help regarding this would be appreciated.
asked Apr 1, 2015 at 15:57
4
I found the reason why the connection was not working, it was because the connection was trying to connect to port 8888, when it needed to connect to port 8889.
$conn = new PDO("mysql:host=$servername;port=8889;dbname=AppDatabase", $username, $password);
This fixed the problem, although changing the server name to localhost still gives the error.
Connection failed: SQLSTATE[HY000] [2002] No such file or directory
But it connects successfully when the IP address is entered for the server name.
answered Apr 1, 2015 at 21:15
JonckJonck
1,5491 gold badge10 silver badges15 bronze badges
4
In my case MySQL sever was not running. I restarted the MySQL server and issue was resolved.
//on ubuntu server
sudo /etc/init.d/mysql start
To avoid MySQL stop problem, you can use the «initctl» utility in Ubuntu 14.04 LTS Linux to make sure the service restarts in case of a failure or reboot. Please consider talking a snapshot of root volume (with mysql stopped) before performing this operations for data retention purpose[8]. You can use the following commands to manage the mysql service with «initctl» utility with stop and start operations.
$ sudo initctl stop mysql
$ sudo initctl start mysql
To verify the working, you can check the status of the service and get
the process id (pid), simulate a failure by killing the «mysql»
process and verify its status as running with new process id after
sometime (typically within 1 minute) using the following commands.
$ sudo initctl status mysql # get pid
$ sudo kill -9 <pid> # kill mysql process
$ sudo initctl status mysql # verify status as running after sometime
Note : In latest Ubuntu version now initctl is replaced by systemctl
answered Oct 16, 2018 at 9:52
vinodvinod
2,8021 gold badge17 silver badges23 bronze badges
3
I spent quite a few hours in a docker
environment where all my containers are docker
containers and I was using Phinx
for migrations. Just to share different responses with different configurations.
Working solutions
"host" => "db", // {docker container's name} Worked
"host" => "172.22.112.1", // {some docker IP through ipconfig - may change on every instance - usually something like 172.x.x.x} Worked
Non-working solutions
"host" => "127.0.0.1", // SQLSTATE[HY000] [2002] Connection refused
"host" => "docker.host.internal", // SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name does not resolve
"host" => "localhost", // SQLSTATE[HY000] [2002] No such file or directory
I was running Phinx
in following way.
docker compose --env-file .env run --rm phinx status -e development
answered Jun 21, 2022 at 11:01
GoharSahiGoharSahi
3911 gold badge7 silver badges21 bronze badges
1
Using MAMP I changed the host=localhost
to host=127.0.0.1
. But a new issue came «connection refused»
Solved this by putting 'port' => '8889'
, in 'Datasources' => [
answered Mar 31, 2019 at 9:55
Using MAMP ON Mac, I solve my problem by renaming
/Applications/MAMP/tmp/mysql/mysql.sock.lock
to
/Applications/MAMP/tmp/mysql/mysql.sock
answered Jul 11, 2020 at 15:58
DeyDey
8269 silver badges21 bronze badges
1. server cert verify flag
I was required to use SSL to connect, and needed to set PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT
to false in the new PDO
options array, besides the entry PDO::MYSQL_ATTR_SSL_CA
for the CA file.
Without it, the mysql log on the server helpfully mentions
2021-07-27 17:02:51 597605 [Warning] Aborted connection 597605 to db: 'unconnected' user: 'unauthenticated' host: '192.168.10.123' (This connection closed normally without authentication)
where I was definitely passing the right db and username and such in the DSN. An empty options array will show the db and user in the error log, at least. I am sure there is a valid, technical reason for these things.
I am adding this information so I can more easily find it, the next time I end up on this page..
2. host in connection string
In the context of SSL, I’ve also seen the error when using the IP address instead of the hostname to connect, if the hostname was used as CN (Common Name) in the certificate.
answered Jul 27, 2021 at 15:20
MSpreijMSpreij
1,09313 silver badges19 bronze badges
For me was php version from mac instead of MAMP, PATH variable on .bash_profile was wrong. I just prepend the MAMP PHP bin folder to the $PATH env variable. For me was:
/Applications/mampstack-7.1.21-0/php/bin
-
In terminal run
vim ~/.bash_profile
to open~/.bash_profile
-
Type i to be able to edit the file, add the bin directory as PATH variable on the top to the file:
export PATH=»/Applications/mampstack-7.1.21-0/php/bin/:$PATH»
-
Hit
ESC
, Type:wq
, and hitEnter
- In Terminal run
source ~/.bash_profile
- In Terminal type
which php
, output should be the path to MAMP PHP install.
answered Jan 29, 2020 at 15:11
MahdiyehMahdiyeh
5277 silver badges11 bronze badges
I had the same issue on a docker container from php:8.0-fpm-alpine
image. I just added the following line in the Dockerfile and it fixed the issue:
RUN apk add mysql-client
answered Oct 12, 2021 at 19:58
Omid EbrahimiOmid Ebrahimi
1,1502 gold badges20 silver badges37 bronze badges
I had a similar problem once, turned out the User in the database was created with something like:
CREATE USER 'webpage'@'localhost' IDENTIFIED BY 'password';
worked fine when the connection details php script had localhost, but not when the IP address was there. A quick swap (ip address when creating user and localhost in connection details) revealed those two things have to match.
answered Aug 12, 2022 at 19:49
1
For everyone if you still strugle with Refusing connection, here is my advice. Download XAMPP or other similar sw and just start MySQL. You dont have to run apache or other things just the MySQL.
answered Jan 26, 2021 at 17:05
1
Содержание
- ОШИБКА: SQLSTATE [HY000] [2002] Невозможно установить соединение, так как целевой компьютер активно отказал в этом
- Решение
- Другие решения
- Laravel по-русски
- #1 31.07.2015 18:23:04
- Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
- #2 01.08.2015 04:46:07
- Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
- #3 01.08.2015 12:11:14
- Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
- #4 01.08.2015 13:52:43
- Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
- #5 01.08.2015 14:26:03
- Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
- #6 01.08.2015 19:39:37
- Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
- #7 01.08.2015 19:40:19
- Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
- #8 17.08.2015 13:31:37
- Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
- #9 04.09.2016 04:58:54
- Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
- #10 01.12.2018 12:39:36
- Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
- #11 01.12.2018 13:08:32
- Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
- #12 24.10.2021 18:33:09
- Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
- Почему получаю SQLSTATE[HY000] [2002] Connection refused, а миграции при этом с БД работают?
- Устраняем типичные ошибки в MySQL
- Не удаётся подключиться к локальному серверу
- Не удаётся подключиться к серверу MySQL
- Ошибки запрета доступа в MySQL
- Потеря соединения с сервером MySQL
- Слишком много подключений
- Недостаточно памяти
- MySQL продолжает «падать»
- Заключение
ОШИБКА: SQLSTATE [HY000] [2002] Невозможно установить соединение, так как целевой компьютер активно отказал в этом
В процессе отладки кода неожиданно произошла ошибка.
У этого есть ряд ошибок относительно подключения к базе данных.
это код, на который указывает ошибка
Я не знаю, что делать, потому что у меня обычно не бывает таких проблем, поэтому я мало изучал вопрос о вампе.
Спасибо за помощь.
Решение
Если значок WAMP — оранжевый, то одна из служб не запущена.
В вашем случае, похоже, что MySQL еще не запущен, поскольку вы получаете сообщение, указывающее сервер не работает и поэтому прислушиваясь к запросам.
Посмотрите на журнал mysql, и если это ничего не говорит, посмотрите на журнал событий Windows, в Windows -> Applications раздел. Сообщения об ошибках довольно хороши для определения причины сбоя MySQL.
Иногда это вызвано тем, что файл My.ini из другой установки был обнаружен WAMPServers MySQL, обычно в папках windows или windows system32. Выполните поиск по «my.ini» и «my.cnf», и если вы найдете один из них вне структуры папок wamp …., то удалите его или, по крайней мере, переименуйте, чтобы он не был найден. Затем перезапустите службу MySQL.
Другие решения
У меня была похожая проблема при попытке перенести сайт Drupal с одного локального хоста на другой. С Mac под управлением XAMMP на Windows под управлением WAMP.
Это было сообщение об ошибке, которое я продолжал получать при попытке доступа к страницам сайта.
В settings.php я все правильно изменил, имя базы данных, пользователя и пароль.
После нескольких часов бессмысленного поиска в Google я изменил порт на пустое значение:
И после этого сайт загрузился правильно.
Перезагрузите ваш wampServer … это должно решить.
и если это не так ..
Реста
Возможно использование разных порт за MySQL чем использовать в вашем коде
И то и другое порты должно быть таким же.
Удалите следующие файлы из каталога:
Это решило мою проблему.
Просто перезапустите сервер Wamp и запустите php bin / magento cache: чистый
Я получал эту ошибку, пытаясь запустить «php artisan migrate» в Windows с установкой виртуальной коробки / vagrant / homestead.
В документации сказано, что мне нужно было запустить эту команду на виртуальной машине.
не забудьте сделать это внутри вашей текущей папки проекта.
Источник
Laravel по-русски
Русское сообщество разработки на PHP-фреймворке Laravel.
#1 31.07.2015 18:23:04
Ошибка базы данных 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
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
http://joxi.ru/GrqdW3ns965BAz
Так и не нашел решения, помогите пожалуйста
Не в сети 31.07.2015
#3 01.08.2015 12:11:14
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
Настройте конфигурацию подключения к бд в файле .env
Не в сети 23.11.2014
#4 01.08.2015 13:52:43
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
Файл настроен, миграции проходят, но статьи не выводятся.
http://joxi.ru/zANpbxPsPXO6m9
Не в сети 31.07.2015
#5 01.08.2015 14:26:03
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
Выявил такую ошибку, меняешь параметры в файле .env, но на сайте в дебагере они не меняются.
Не в сети 31.07.2015
#6 01.08.2015 19:39:37
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
Я Вам написал, исправьте настройки в .env
и в database.php
Не в сети 23.11.2014
#7 01.08.2015 19:40:19
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
По скриншоту видно, что у вас дефолтные настройки
Не в сети 23.11.2014
#8 17.08.2015 13:31:37
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
По скриншоту видно, что у вас дефолтные настройки
Нифига не дефолтные, точнее кажется что это так. порт у него какой то марсианский 33060, а так вроде ниче так дефолт 😀
Не в сети 17.08.2015
#9 04.09.2016 04:58:54
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
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
У меня возникла такая же проблема на MAMP. Решил просто — включил галочку в настройках MySQL. Если кому-то поможет, тут скриншот экрана, на котором нужно включить настройку http://priscree.ru/img/bc59e5a1ee0c1c.png
Не в сети 01.12.2018
#11 01.12.2018 13:08:32
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
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
artoodetoo, спасибо!
При переносе проекта на VPS такая же ошибка была.
Помогло обновление кэш
php artisan config:cache
Источник
Почему получаю SQLSTATE[HY000] [2002] Connection refused, а миграции при этом с БД работают?
Пытаюсь использовать YII локально с докером. Настроил БД. Миграции работают нормально, при этом когда пробую записать или прочитать что-то из таблицы user , к примеру, получаю ошибку :
Менял 127.0.0.1 на localhost.
- Вопрос задан более трёх лет назад
- 12626 просмотров
Средний 2 комментария
у меня была такая проблема когда перерёл на винде с докер на докер тулбокс
решил её добавив в docker-compose.yml в настроки mysql
Правильный ответ
Пришлось сделать ДВА(!) конфига . Отдельно для консоли и для остального приложения. Разница в
dsn.
Для консоли
‘dsn’ => ‘mysql:host=127.0.0.1;dbname=project’,
Для остального приложения
‘dsn’ => ‘mysql:host=mysql;dbname=project’,
Пытаюсь использовать YII локально с докером.
Привет, столкнулся с той же проблемой, решил твоим методом
Изменил ‘host=127.0.0.1’ на ‘host=mysql’ и ошибка пропала.
Хочу уточнить, ты пишешь:
«Для остального приложения
‘dsn’ => ‘mysql:host=mysql;dbname=project’, «
‘host = mysql’ это потому что контейнер с базой данных так называется (mysql) или если по-другому, то почему?
Источник
Устраняем типичные ошибки в MySQL
MySQL — система управления базами данных (СУБД) с открытым исходным кодом от компании Oracle. Она была разработана и оптимизирована специально для работы веб-приложений. MySQL является неотъемлемой частью таких веб-сервисов, как Facebook, Twitter, Wikipedia, YouTube и многих других.
Эта статья расскажет, как определять, с чем связаны частые ошибки на сервере MySQL, и устранять их.
Не удаётся подключиться к локальному серверу
Одной из распространённых ошибок подключения клиента к серверу является «ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)».
Эта ошибка означает, что на хосте не запущен сервер MySQL ( mysqld ) или вы указали неправильное имя файла сокета Unix или порт TCP/IP при попытке подключения.
Убедитесь, что сервер работает. Проверьте процесс с именем mysqld на хосте сервера, используя команды ps или grep, как показано ниже.
Если эти команды не показывают выходных данных, то сервер БД не работает. Поэтому клиент не может подключиться к нему. Чтобы запустить сервер, выполните команду systemctl.
Чтобы проверить состояние службы MySQL, используйте следующую команду:
Если в результате выполнения команды произошла ошибка службы MySQL, вы можете попробовать перезапустить службу и ещё раз проверить её состояние.
Если сервер работает (как показано) и вы по-прежнему видите эту ошибку, вам следует проверить, не заблокирован ли порт TCP/IP брандмауэром или любой другой службой блокировки портов.
Для поиска порта, который прослушивается сервером, используйте команду netstat .
Не удаётся подключиться к серверу MySQL
Ещё одна похожая и часто встречающаяся ошибка подключения — «(2003) Can’t connect to MySQL server on ‘server’ (10061)». Это означает, что в сетевом соединении было отказано.
Следует проверить, работает ли в системе сервер MySQL (смотрите выше) и на тот ли порт вы подключаетесь (как найти порт, можно посмотреть выше).
Похожие частые ошибки, с которыми вы можете столкнуться при попытке подключиться к серверу MySQL:
Ошибки запрета доступа в MySQL
В MySQL учётная запись (УЗ) определяется именем пользователя и клиентским хостом, с которого пользователь может подключиться. УЗ может также иметь данные для аутентификации (например, пароль).
Причин для запрета доступа может быть много. Одна из них связана с учётными записями MySQL, которые сервер разрешает использовать клиентским программам при подключении. Это означает, что имя пользователя, указанное в соединении, может не иметь прав доступа к базе данных.
В MySQL есть возможность создавать учётные записи, позволяющие пользователям клиентских программ подключаться к серверу и получать доступ к данным. Поэтому при ошибке доступа проверьте разрешение УЗ на подключение к серверу через клиентскую программу.
Увидеть разрешённые привилегии учётной записи можно, выполнив в консоли команду SHOW GRANTS
Входим в консоль (пример для Unix, для Windows консоль можно найти в стартовом меню):
В консоли вводим команду:
Дать привилегии конкретному пользователю в БД по IP-адресу можно, используя следующие команды:
Ошибки запрещённого доступа могут также возникнуть из-за проблем с подключением к MySQL (см. выше).
Потеря соединения с сервером MySQL
С этой ошибкой можно столкнуться по одной из следующих причин:
- плохое сетевое соединение;
- истекло время ожидания соединения;
- размер BLOB больше, чем max_allowed_packet .
В первом случае убедитесь, что у вас стабильное сетевое подключение (особенно, если подключаетесь удалённо).
Если проблема с тайм-аутом соединения (особенно при первоначальном соединении MySQL с сервером), увеличьте значение параметра connect_timeout .
В случае с размером BLOB нужно установить более высокое значение для max_allowed_packet в файле конфигурации /etc/my.cnf в разделах [mysqld] или [client] как показано ниже.
Если файл конфигурации недоступен, это значение можно установить с помощью следующей команды.
Слишком много подключений
Эта ошибка означает, что все доступные соединения используются клиентскими программами. Количество соединений (по умолчанию 151) контролируется системной переменной max_connections . Устранить проблему можно, увеличив значение переменной в файле конфигурации /etc/my.cnf .
Недостаточно памяти
Если такая ошибка возникла, это может означать, что в MySQL недостаточно памяти для хранения всего результата запроса.
Сначала нужно убедиться, что запрос правильный. Если это так, то нужно выполнить одно из следующих действий:
- если клиент MySQL используется напрямую, запустите его с ключом —quick switch , чтобы отключить кешированные результаты;
- если вы используете драйвер MyODBC, пользовательский интерфейс (UI) имеет расширенную вкладку с опциями. Отметьте галочкой «Do not cache result» (не кешировать результат).
Также может помочь MySQL Tuner. Это полезный скрипт, который подключается к работающему серверу MySQL и даёт рекомендации по настройке для более высокой производительности.
MySQL продолжает «падать»
Если такая проблема возникает, необходимо выяснить, заключается она в сервере или в клиенте. Обратите внимание, что многие сбои сервера вызваны повреждёнными файлами данных или индексными файлами.
Вы можете проверить состояние сервера, чтобы определить, как долго он работал.
Чтобы узнать время безотказной работы сервера, запустите команду mysqladmin .
Кроме того, можно остановить сервер, сделать отладку MySQL и снова запустить службу. Для отображения статистики процессов MySQL во время выполнения других процессов откройте окно командной строки и введите следующее:
Заключение
Самое важное при диагностике — понять, что именно вызвало ошибку. Следующие шаги помогут вам в этом:
- Первый и самый важный шаг — просмотреть журналы MySQL, которые хранятся в каталоге /var/log/mysql/ . Вы можете использовать утилиты командной строки вроде tail для чтения файлов журнала.
- Если служба MySQL не запускается, проверьте её состояние с помощью systemctl . Или используйте команду journalctl (с флагом -xe ) в systemd.
- Вы также можете проверить файл системного журнала (например, /var/log/messages ) на предмет обнаружения ошибок.
- Попробуйте использовать такие инструменты, как Mytop, glances, top, ps или htop, чтобы проверить, какая программа использует весь ресурс процессора или блокирует машину. Они также помогут определить нехватку памяти, дискового пространства, файловых дескрипторов или какого-либо другого важного ресурса.
- Если проблема в каком-либо процессе, можно попытаться его принудительно остановить, а затем запустить (при необходимости).
- Если вы уверены, что проблемы именно на стороне сервера, можете выполнить команды: mysqladmin -u root ping или mysqladmin -u root processlist , чтобы получить от него ответ.
- Если при подключении проблема не связана с сервером, проверьте, нормально ли работает клиент. Попробуйте получить какие-либо его выходные данные для устранения неполадок.
Источник
Ошибка «ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/run/mysqld/mysqld.sock’ (2 «No such file or directory»)» (РЕШЕНО)
При попытке подключения к серверу MySQL может возникнуть ошибка:
Вариант на другом дистрибутиве (отличается путь до файла mysqld.sock):
Ошибка означает, что не получается подключиться к MySQL серверу через сокет /run/mysqld/mysqld.sock, поскольку данный файл просто не существует.
Эта ошибка может возникнуть при использовании примерно следующей команды:
Причём она одинакова и для MySQL и для MariaDB.
Причина ошибки всегда одна — на хосте, к которому вы пытаетесь подключиться, не работает служба MySQL/MariaDB. Конкретных вариантов может быть множество: от банальных что вы забыли установить службу до более сложных, когда из-за ошибки в команде вы подключаетесь не к тому хосту.
Убедитесь, что MySQL/MariaDB сервер установлен
В первую очередь убедитесь, что СУБД MySQL или MariaDB вообще установлены.
Пакет может называться mysql-server или mysql. Если вы выбрали MariaDB вместо MySQL, то пакет называется mariadb-server или mariadb.
Пакеты mysql-client или mariadb-clients или какие-то ещё НЕ подходят! Это только клиенты для подключения, но не сам сервер.
На Ubuntu, Linux Mint и других дистрибутивах из этой семьи для установки выполните:
Убедитесь, что служба MySQL/MariaDB запущена
Файл /run/mysqld/mysqld.sock создаётся когда MySQL или MariaDB сервер установлен и запущен. Поэтому проверим статус сервера следующей командой (подходит и для MySQL, и для MariaDB):
Должен быть статус active (running) .
Если служба не запущена, то запустите её командой:
После этого проверьте статус службы
Добавления службы в автозагрузку (чтобы не пришлось её запускать при каждом включении компьютера, выполните следующую команду):
Убедитесь, что служба MySQL/MariaDB настроена правильно
Если причина проблемы оказалась в том, что служба не запущена и после попытки запуска служба вновь оказалась неактивной, значит проблема может быть в неправильной настройке сервера MySQL/MariaDB.
Файлы конфигурации (настроек) MySQL и MariaDB могут размещаться в разных директориях, например:
При этом в файлах могут быть установлены различные значения одной и той же настройки, что приводит к проблеме. Устраните противоречие, либо удалите или переименуйте один из файлов и попробуйте вновь запустить службу.
На что стоит обратить внимание в конфигурационных файлах
Если вы хотите сохранить оба конфигурационных файла, то проверьте, чтобы значение socket было одинаковым. Также для bind-address должен быть установлен правильный IP адрес. Если к этому серверу подключаются только приложения, которые запущены на этом же сервере, то в качестве значения bind-address нужно прописать localhost или 127.0.0.1
Перезапустите службу mysqld
Попробуйте просто перезапустить службу командой:
Либо следующим образом, значала узнайте PID (идентификатор) процесса mysql:
Затем выполните следующую команду, в которой вместо [PID] укажите число, полученное из предыдущей команды:
Затем вновь запустите службу:
Неправильные права на файл /run/mysqld/mysqld.sock
У MySQL/MariaDB должно быть достаточно прав для создания и записи в файл /run/mysqld/mysqld.sock (или /var/run/mysqld/mysqld.sock). Можно попробовать решить проблему следующим образом, если файл /run/mysqld/mysqld.sock (или /var/run/mysqld/mysqld.sock — указывайте файл в соответствии с вашими настройками в my.cnf) не существует, то создайте его:
Затем сделайте пользователя mysql владельцем этого файла:
Установите правильные права на этот файл:
Вновь попробуйте запустить сервис:
Проблемы запуска службы из-за несовместимой настройки apparmor
Если при запуске службы вы получаете ошибку и вы используете профили apparmor, проверьте, чтобы профиль apparmor позволял процессу mysqld иметь доступ в необходимую для него директорию.
Несовместимость может быть вызвана, к примеру, файл сокета для MySQL настроен на сохранение по пути /run/mysqld/mysqld.sock, но в профиле apparmor дано разрешение на /var/run/mysqld/mysqld.sock
Чтобы убедиться, что дело именно в apparmor, попробуйте отключить его:
Если проблема исчезла и служба mysqld запустилась, значит нужно поверить разрешения для mysqld и добавить необходимые пути.
К примеру для показанного примера решением проблемы является добавление в /etc/apparmor.d/usr.sbin.mysqld строк:
Служба mysqld не может запуститься из-за отсутствия места на диске
Если ваш диск переполнен, то это может быть причиной невозможности запуска службы, даже если она правильно настроена и ранее нормально работала.
Освободите пространство на диске и перезапустите службу.
Служба mysqld не может запуститься так как порт 3306 используется другой программой
По умолчанию служба mysqld использует порт 3306 если этот порт использует другой процесс, то это является препятствием для запуска MySQL и в конечном счёте появляется рассматриваемая ошибка.
Для решения проблемы выясните, какая служба прослушивает порт 3306. Например, это можно сделать командой:
А затем остановите эту служу и удалите её из автозагрузки.
Либо можно использовать альтернативный вариант — настроить службу mysqld прослушивать другой, отличный от дефолтного порта. Но это может повлечь необходимость явно указывать порт в любых приложениях, которые подключаются к СУБД MySQL.
Вместо localhost попробуйте использовать 127.0.0.1
Вместо localhost в примерно такой команде:
Используйте 127.0.0.1:
(также обратите внимание на отсутствие пробела между -p и mypassword)
Служба mysqld не запускается из-за недоступности файлов баз данных
Ещё одной причиной может стать то, что вы переместили файлы с базами данных, но не изменили пути в соответствующих файлах настройки MySQL. Выполните правильно настройку и перезапустите MySQL или MariaDB.
Неверно указан хост для подключения
Для указания удалённого хоста используется опция -h. Из-за привычки указывать хост после имени пользователя через знак @ (как это делается, например, для SSH), либо указывать удалённый хост без опции -h, команда может оказаться неверной в том плане, что вместо подключения к удалённому хосту, вы пытаетесь подключиться, например, к своей собственной системе, на которой служба MySQL не установлена.
Следовательно, отредактируйте команду, используйте опцию -h или более длинный вариант —host=имя_хоста для указания хоста, к которому вы хотите подключиться.
Кстати, для указания имени пользователя используется опция -u. Если пароль отличается от стандартного, то используется опция -P (заглавная буква). Опция -p (прописная буква) используется для указания базы данных, которая выбирается для использования.
Служба mysqld по умолчанию не добавляется в автозагрузку на некоторых дистрибутивах
Помните, что на некоторых дистрибутивах (например, производных Arch Linux, на Kali Linux) даже после установки MySQL или MariaDB они не добавляются в автозагрузку и не запускаются по умолчанию.
Для запуска службы и её авто старта при последующих включениях компьютера выполните команды:
Заключение
Итак, основной причиной ошибки «ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/run/mysqld/mysqld.sock’ (2 «No such file or directory»)» является незапущенная служба mysqld. Причин того, что указанная служба не запущена может быть множество: от банального факта что служба вообще не установлена, до более серьёзных проблем связанных с переполненностью диска и неправильной настройкой конфигурационных файлов и прав доступа к файлам.
Следовательно, выявите и устраните причину, по которой служба не запущена, а затем запустите службу и ошибка исчезнет.
Источник
Почему получаю SQLSTATE[HY000] [2002] Connection refused, а миграции при этом с БД работают?
Пытаюсь использовать YII локально с докером. Настроил БД. Миграции работают нормально, при этом когда пробую записать или прочитать что-то из таблицы user , к примеру, получаю ошибку :
Менял 127.0.0.1 на localhost.
- Вопрос задан более трёх лет назад
- 12059 просмотров
Средний 2 комментария
у меня была такая проблема когда перерёл на винде с докер на докер тулбокс
решил её добавив в docker-compose.yml в настроки mysql
Правильный ответ
Пришлось сделать ДВА(!) конфига . Отдельно для консоли и для остального приложения. Разница в
dsn.
Для консоли
‘dsn’ => ‘mysql:host=127.0.0.1;dbname=project’,
Для остального приложения
‘dsn’ => ‘mysql:host=mysql;dbname=project’,
Пытаюсь использовать YII локально с докером.
Привет, столкнулся с той же проблемой, решил твоим методом
Изменил ‘host=127.0.0.1’ на ‘host=mysql’ и ошибка пропала.
Хочу уточнить, ты пишешь:
«Для остального приложения
‘dsn’ => ‘mysql:host=mysql;dbname=project’, «
‘host = mysql’ это потому что контейнер с базой данных так называется (mysql) или если по-другому, то почему?
Источник
Docker MYSQL ‘[2002] Connection refused’
I was trying out Docker for the first time. Got a LEMP stack up and running, but I can’t connect to the MYSQL Database. Not on my Symfony application, not on PHPMyAdmin. The applications are returning the following error code:
An exception occured in driver: SQLSTATE[HY000] [2002] Connection refused
This is my docker-compose.yml:
Could someone help me out? Thank you for your time.
8 Answers 8
The ‘[2002] Connection refused’ means you can reach the database server, but you don’t have right access for the user (in your case admin). By default mariadb have a root user with the password given by MYSQL_ROOT_PASSWORD and this user can connect from any server (%).
If you want use an over login to your databases, you have to create it in the databases server with the right granting on databases from chosen locations.
The problem here is that you have named your database server as ‘mysql’ (service name in the docker-compose file). But by default phpmyadmin tries to connect to a database server named ‘db’. Adding PMA_HOST: mysql under the environment section of the phpmyadmin service will resolve this problem.
I think that MYSQL_USERNAME and PMA_ARBITRARY are useless if you work with default configuration (connection with root to your databases server)
Источник
Устраняем типичные ошибки в MySQL
MySQL — система управления базами данных (СУБД) с открытым исходным кодом от компании Oracle. Она была разработана и оптимизирована специально для работы веб-приложений. MySQL является неотъемлемой частью таких веб-сервисов, как Facebook, Twitter, Wikipedia, YouTube и многих других.
Эта статья расскажет, как определять, с чем связаны частые ошибки на сервере MySQL, и устранять их.
Не удаётся подключиться к локальному серверу
Одной из распространённых ошибок подключения клиента к серверу является «ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)».
Эта ошибка означает, что на хосте не запущен сервер MySQL ( mysqld ) или вы указали неправильное имя файла сокета Unix или порт TCP/IP при попытке подключения.
Убедитесь, что сервер работает. Проверьте процесс с именем mysqld на хосте сервера, используя команды ps или grep, как показано ниже.
Если эти команды не показывают выходных данных, то сервер БД не работает. Поэтому клиент не может подключиться к нему. Чтобы запустить сервер, выполните команду systemctl.
Чтобы проверить состояние службы MySQL, используйте следующую команду:
Если в результате выполнения команды произошла ошибка службы MySQL, вы можете попробовать перезапустить службу и ещё раз проверить её состояние.
Если сервер работает (как показано) и вы по-прежнему видите эту ошибку, вам следует проверить, не заблокирован ли порт TCP/IP брандмауэром или любой другой службой блокировки портов.
Для поиска порта, который прослушивается сервером, используйте команду netstat .
Не удаётся подключиться к серверу MySQL
Ещё одна похожая и часто встречающаяся ошибка подключения — «(2003) Can’t connect to MySQL server on ‘server’ (10061)». Это означает, что в сетевом соединении было отказано.
Следует проверить, работает ли в системе сервер MySQL (смотрите выше) и на тот ли порт вы подключаетесь (как найти порт, можно посмотреть выше).
Похожие частые ошибки, с которыми вы можете столкнуться при попытке подключиться к серверу MySQL:
Ошибки запрета доступа в MySQL
В MySQL учётная запись (УЗ) определяется именем пользователя и клиентским хостом, с которого пользователь может подключиться. УЗ может также иметь данные для аутентификации (например, пароль).
Причин для запрета доступа может быть много. Одна из них связана с учётными записями MySQL, которые сервер разрешает использовать клиентским программам при подключении. Это означает, что имя пользователя, указанное в соединении, может не иметь прав доступа к базе данных.
В MySQL есть возможность создавать учётные записи, позволяющие пользователям клиентских программ подключаться к серверу и получать доступ к данным. Поэтому при ошибке доступа проверьте разрешение УЗ на подключение к серверу через клиентскую программу.
Увидеть разрешённые привилегии учётной записи можно, выполнив в консоли команду SHOW GRANTS
Входим в консоль (пример для Unix, для Windows консоль можно найти в стартовом меню):
В консоли вводим команду:
Дать привилегии конкретному пользователю в БД по IP-адресу можно, используя следующие команды:
Ошибки запрещённого доступа могут также возникнуть из-за проблем с подключением к MySQL (см. выше).
Потеря соединения с сервером MySQL
С этой ошибкой можно столкнуться по одной из следующих причин:
- плохое сетевое соединение;
- истекло время ожидания соединения;
- размер BLOB больше, чем max_allowed_packet .
В первом случае убедитесь, что у вас стабильное сетевое подключение (особенно, если подключаетесь удалённо).
Если проблема с тайм-аутом соединения (особенно при первоначальном соединении MySQL с сервером), увеличьте значение параметра connect_timeout .
В случае с размером BLOB нужно установить более высокое значение для max_allowed_packet в файле конфигурации /etc/my.cnf в разделах [mysqld] или [client] как показано ниже.
Если файл конфигурации недоступен, это значение можно установить с помощью следующей команды.
Слишком много подключений
Эта ошибка означает, что все доступные соединения используются клиентскими программами. Количество соединений (по умолчанию 151) контролируется системной переменной max_connections . Устранить проблему можно, увеличив значение переменной в файле конфигурации /etc/my.cnf .
Недостаточно памяти
Если такая ошибка возникла, это может означать, что в MySQL недостаточно памяти для хранения всего результата запроса.
Сначала нужно убедиться, что запрос правильный. Если это так, то нужно выполнить одно из следующих действий:
- если клиент MySQL используется напрямую, запустите его с ключом —quick switch , чтобы отключить кешированные результаты;
- если вы используете драйвер MyODBC, пользовательский интерфейс (UI) имеет расширенную вкладку с опциями. Отметьте галочкой «Do not cache result» (не кешировать результат).
Также может помочь MySQL Tuner. Это полезный скрипт, который подключается к работающему серверу MySQL и даёт рекомендации по настройке для более высокой производительности.
MySQL продолжает «падать»
Если такая проблема возникает, необходимо выяснить, заключается она в сервере или в клиенте. Обратите внимание, что многие сбои сервера вызваны повреждёнными файлами данных или индексными файлами.
Вы можете проверить состояние сервера, чтобы определить, как долго он работал.
Чтобы узнать время безотказной работы сервера, запустите команду mysqladmin .
Кроме того, можно остановить сервер, сделать отладку MySQL и снова запустить службу. Для отображения статистики процессов MySQL во время выполнения других процессов откройте окно командной строки и введите следующее:
Заключение
Самое важное при диагностике — понять, что именно вызвало ошибку. Следующие шаги помогут вам в этом:
- Первый и самый важный шаг — просмотреть журналы MySQL, которые хранятся в каталоге /var/log/mysql/ . Вы можете использовать утилиты командной строки вроде tail для чтения файлов журнала.
- Если служба MySQL не запускается, проверьте её состояние с помощью systemctl . Или используйте команду journalctl (с флагом -xe ) в systemd.
- Вы также можете проверить файл системного журнала (например, /var/log/messages ) на предмет обнаружения ошибок.
- Попробуйте использовать такие инструменты, как Mytop, glances, top, ps или htop, чтобы проверить, какая программа использует весь ресурс процессора или блокирует машину. Они также помогут определить нехватку памяти, дискового пространства, файловых дескрипторов или какого-либо другого важного ресурса.
- Если проблема в каком-либо процессе, можно попытаться его принудительно остановить, а затем запустить (при необходимости).
- Если вы уверены, что проблемы именно на стороне сервера, можете выполнить команды: mysqladmin -u root ping или mysqladmin -u root processlist , чтобы получить от него ответ.
- Если при подключении проблема не связана с сервером, проверьте, нормально ли работает клиент. Попробуйте получить какие-либо его выходные данные для устранения неполадок.
Источник
I am trying to use a PHP connection to connect MySQL Database which is on phpmyadmin. Nothing fancy about the connection just trying to see whether the connection is successful or not. I am using MAMP to host the database, the connection I am trying to use is this:
<?php
$servername = "127.0.0.1";
$username = "root";
$password = "root";
try {
$conn = new PDO("mysql:host=$servername;dbname=AppDatabase", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>
I have been using postman to test to see if the connection is working, but I keep receiving this error message:
Connection failed: SQLSTATE[HY000] [2002] Connection refused
Before I was receiving an error message of:
Connection failed: SQLSTATE[HY000] [2002] No such file or directory
This was because I had set the servername to localhost, through changing this to the IP address it has given me connection refused and I have no idea what is wrong.
Any help regarding this would be appreciated.
asked Apr 1, 2015 at 15:57
4
I found the reason why the connection was not working, it was because the connection was trying to connect to port 8888, when it needed to connect to port 8889.
$conn = new PDO("mysql:host=$servername;port=8889;dbname=AppDatabase", $username, $password);
This fixed the problem, although changing the server name to localhost still gives the error.
Connection failed: SQLSTATE[HY000] [2002] No such file or directory
But it connects successfully when the IP address is entered for the server name.
answered Apr 1, 2015 at 21:15
JonckJonck
1,5491 gold badge10 silver badges15 bronze badges
4
In my case MySQL sever was not running. I restarted the MySQL server and issue was resolved.
//on ubuntu server
sudo /etc/init.d/mysql start
To avoid MySQL stop problem, you can use the «initctl» utility in Ubuntu 14.04 LTS Linux to make sure the service restarts in case of a failure or reboot. Please consider talking a snapshot of root volume (with mysql stopped) before performing this operations for data retention purpose[8]. You can use the following commands to manage the mysql service with «initctl» utility with stop and start operations.
$ sudo initctl stop mysql
$ sudo initctl start mysql
To verify the working, you can check the status of the service and get
the process id (pid), simulate a failure by killing the «mysql»
process and verify its status as running with new process id after
sometime (typically within 1 minute) using the following commands.
$ sudo initctl status mysql # get pid
$ sudo kill -9 <pid> # kill mysql process
$ sudo initctl status mysql # verify status as running after sometime
Note : In latest Ubuntu version now initctl is replaced by systemctl
answered Oct 16, 2018 at 9:52
vinodvinod
2,8021 gold badge17 silver badges23 bronze badges
3
I spent quite a few hours in a docker
environment where all my containers are docker
containers and I was using Phinx
for migrations. Just to share different responses with different configurations.
Working solutions
"host" => "db", // {docker container's name} Worked
"host" => "172.22.112.1", // {some docker IP through ipconfig - may change on every instance - usually something like 172.x.x.x} Worked
Non-working solutions
"host" => "127.0.0.1", // SQLSTATE[HY000] [2002] Connection refused
"host" => "docker.host.internal", // SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name does not resolve
"host" => "localhost", // SQLSTATE[HY000] [2002] No such file or directory
I was running Phinx
in following way.
docker compose --env-file .env run --rm phinx status -e development
answered Jun 21, 2022 at 11:01
GoharSahiGoharSahi
3911 gold badge7 silver badges21 bronze badges
1
Using MAMP I changed the host=localhost
to host=127.0.0.1
. But a new issue came «connection refused»
Solved this by putting 'port' => '8889'
, in 'Datasources' => [
answered Mar 31, 2019 at 9:55
Using MAMP ON Mac, I solve my problem by renaming
/Applications/MAMP/tmp/mysql/mysql.sock.lock
to
/Applications/MAMP/tmp/mysql/mysql.sock
answered Jul 11, 2020 at 15:58
DeyDey
8269 silver badges21 bronze badges
1. server cert verify flag
I was required to use SSL to connect, and needed to set PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT
to false in the new PDO
options array, besides the entry PDO::MYSQL_ATTR_SSL_CA
for the CA file.
Without it, the mysql log on the server helpfully mentions
2021-07-27 17:02:51 597605 [Warning] Aborted connection 597605 to db: 'unconnected' user: 'unauthenticated' host: '192.168.10.123' (This connection closed normally without authentication)
where I was definitely passing the right db and username and such in the DSN. An empty options array will show the db and user in the error log, at least. I am sure there is a valid, technical reason for these things.
I am adding this information so I can more easily find it, the next time I end up on this page..
2. host in connection string
In the context of SSL, I’ve also seen the error when using the IP address instead of the hostname to connect, if the hostname was used as CN (Common Name) in the certificate.
answered Jul 27, 2021 at 15:20
MSpreijMSpreij
1,09313 silver badges19 bronze badges
For me was php version from mac instead of MAMP, PATH variable on .bash_profile was wrong. I just prepend the MAMP PHP bin folder to the $PATH env variable. For me was:
/Applications/mampstack-7.1.21-0/php/bin
-
In terminal run
vim ~/.bash_profile
to open~/.bash_profile
-
Type i to be able to edit the file, add the bin directory as PATH variable on the top to the file:
export PATH=»/Applications/mampstack-7.1.21-0/php/bin/:$PATH»
-
Hit
ESC
, Type:wq
, and hitEnter
- In Terminal run
source ~/.bash_profile
- In Terminal type
which php
, output should be the path to MAMP PHP install.
answered Jan 29, 2020 at 15:11
MahdiyehMahdiyeh
5277 silver badges11 bronze badges
I had the same issue on a docker container from php:8.0-fpm-alpine
image. I just added the following line in the Dockerfile and it fixed the issue:
RUN apk add mysql-client
answered Oct 12, 2021 at 19:58
Omid EbrahimiOmid Ebrahimi
1,1502 gold badges20 silver badges37 bronze badges
I had a similar problem once, turned out the User in the database was created with something like:
CREATE USER 'webpage'@'localhost' IDENTIFIED BY 'password';
worked fine when the connection details php script had localhost, but not when the IP address was there. A quick swap (ip address when creating user and localhost in connection details) revealed those two things have to match.
answered Aug 12, 2022 at 19:49
1
For everyone if you still strugle with Refusing connection, here is my advice. Download XAMPP or other similar sw and just start MySQL. You dont have to run apache or other things just the MySQL.
answered Jan 26, 2021 at 17:05
1
#1 31.07.2015 18:23:04
Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
Всем привет!
Вопрос такой, создал подключение к базе данных, миграции проходят. Стал выводить данные и получил такую ошибку.
PDOException in Connector.php line 50:
SQLSTATE[HY000] [2002] Connection refused
Гугл не помог, подскажите, может быть у кого-то была подобная проблема?
Использую homestead, но еще на компьютере установлен MAMP, может быть дело в этом?
#3 01.08.2015 12:11:14
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
Настройте конфигурацию подключения к бд в файле .env
#4 01.08.2015 13:52:43
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
Файл настроен, миграции проходят, но статьи не выводятся.
http://joxi.ru/zANpbxPsPXO6m9
#5 01.08.2015 14:26:03
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
Выявил такую ошибку, меняешь параметры в файле .env, но на сайте в дебагере они не меняются.
#6 01.08.2015 19:39:37
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,
],
#7 01.08.2015 19:40:19
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
По скриншоту видно, что у вас дефолтные настройки
#8 17.08.2015 13:31:37
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
fanaticus пишет:
По скриншоту видно, что у вас дефолтные настройки
Нифига не дефолтные, точнее кажется что это так…порт у него какой то марсианский 33060, а так вроде ниче так дефолт
#9 04.09.2016 04:58:54
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
собственно кому полезно может будет.
Решение аналогичное Fanaticus.
—
правда машина — Мак, локалхост через Mamp.
после некоторых действий тут
http://stackoverflow.com/questions/3250 … -with-mamp
переМэйкил контроллер связанный с миграцией.
#10 01.12.2018 12:39:36
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
У меня возникла такая же проблема на MAMP. Решил просто — включил галочку в настройках MySQL. Если кому-то поможет, тут скриншот экрана, на котором нужно включить настройку http://priscree.ru/img/bc59e5a1ee0c1c.png
#11 01.12.2018 13:08:32
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.
#12 24.10.2021 18:33:09
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
artoodetoo, спасибо!
При переносе проекта на VPS такая же ошибка была.
Помогло обновление кэш
php artisan config:cache
#13 17.11.2022 21:18:56
Re: Ошибка базы данных SQLSTATE[HY000] [2002] Connection refused
Я запускаю laravel через docker-compose.
Мне помогло вот это
Так, как в docker-compose.yml прописано services: mysql
В процессе отладки кода неожиданно произошла ошибка.
У этого есть ряд ошибок относительно подключения к базе данных.
ERROR: SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
( ! ) Fatal error: Uncaught exception 'PDOException' with message ' in C:wampwwwwebmainusers.php on line 15
( ! ) PDOException: SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it. in C:wampwwwwebmainusers.php on line 15
это код, на который указывает ошибка
function __construct()
{
$this->con = new PDO("mysql:host=".$this->host.";dbname=".$this->db,$this->user,$this->pass);
}
Я не знаю, что делать, потому что у меня обычно не бывает таких проблем, поэтому я мало изучал вопрос о вампе.
Спасибо за помощь.
12
Решение
Если значок WAMP — оранжевый, то одна из служб не запущена.
В вашем случае, похоже, что MySQL еще не запущен, поскольку вы получаете сообщение, указывающее сервер не работает и поэтому прислушиваясь к запросам.
Посмотрите на журнал mysql, и если это ничего не говорит, посмотрите на журнал событий Windows, в Windows -> Applications
раздел. Сообщения об ошибках довольно хороши для определения причины сбоя MySQL.
Иногда это вызвано тем, что файл My.ini из другой установки был обнаружен WAMPServers MySQL, обычно в папках windows или windows system32. Выполните поиск по «my.ini» и «my.cnf», и если вы найдете один из них вне структуры папок wamp …., то удалите его или, по крайней мере, переименуйте, чтобы он не был найден. Затем перезапустите службу MySQL.
23
Другие решения
У меня была похожая проблема при попытке перенести сайт Drupal с одного локального хоста на другой. С Mac под управлением XAMMP на Windows под управлением WAMP.
Это было сообщение об ошибке, которое я продолжал получать при попытке доступа к страницам сайта.
PDOException: SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
in drupal_get_installed_schema_version() (line 155 of C:wampwwwchiaincludesinstall.inc).
В settings.php я все правильно изменил, имя базы данных, пользователя и пароль.
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'mydatabasename',
'username' => 'mydbusername',
'password' => 'mydbpass',
'host' => 'localhost',
'port' => '8889',
'driver' => 'mysql',
'prefix' => '',
),
),
);
После нескольких часов бессмысленного поиска в Google я изменил порт на пустое значение:
'port' => '',
И после этого сайт загрузился правильно.
8
Перезагрузите ваш wampServer … это должно решить.
и если это не так ..
Реста
1
Возможно использование разных порт за MySQL чем использовать в вашем коде
$conn = new PDO("mysql:host=".SERVER_NAME.";port=3307;dbname=".DB_NAME, DB_USER, DB_PASS);
И то и другое порты должно быть таким же.
1
Удалите следующие файлы из каталога:
wampbinmysqlmysql5.6.17ib_logfile0
wampbinmysqlmysql5.6.17ib_logfile1
wampbinmysqlmysql5.6.17ibdata1
Это решило мою проблему.
0
Просто перезапустите сервер Wamp и запустите php bin / magento cache: чистый
0
Я получал эту ошибку, пытаясь запустить «php artisan migrate» в Windows с установкой виртуальной коробки / vagrant / homestead.
В документации сказано, что мне нужно было запустить эту команду на виртуальной машине.
Это сработало !!!
не забудьте сделать это внутри вашей текущей папки проекта.
-1
Это будет короткий пост, но мы сочли это необходимым, поскольку нам приходилось сталкиваться с этим нестандартным способом, учитывая нашу ситуацию. Мы решили поиграть с WP CLI, но столкнулся с несколькими проблемами конфигурации.
Его было достаточно просто установить, но мы получили ряд ошибок после выполнения следующей команды:
wp scaffold _s
Трассировка стека ошибки началась с чего-то, связанного со следующим сообщением об ошибке, выгруженным PHP:
PHP Warning: mysqli_real_connect(): (HY000/2002): Connection refused in /path/to/wordpress/wp-includes/wp-db.php on line 1531
И затем это закончилось более дружественной, но немного менее полезной ошибкой от WP CLI:
Error: Error establishing a database connection. This either means that the username and password information in your `wp-config.php` file is incorrect or we can’t contact the database server at `127.0.0.1`. This could mean your host’s database server is down.
Мы пол дня возились с локальными базами данных, поэтому решили, что это что-то напортачило. Проверив, что все работает, и мы не поменяли местами порты в MAMP и вышли в Stack Overflow.
Мы нашли несколько ответов, которые объясняют суть проблемы в том, что класс PHP mysqli_real_connect( ) пытается получить доступ к базовому сокету UNIX способом, который не очень хорошо работает с localhost.
Мы не разбирались в том, что на самом деле происходит на системном уровне, так как мы просто хотели более чистый способ начать новую тему. В нескольких ответах предлагается изменить localhost на локальный IP-адрес, такой как 127.0 .0 .1, но это, похоже, не решило проблему полностью, что привело обратно к MAMP и MySQL Workbench.
Основываясь на подробных ответах по переполнению стека, похоже, что класс PHP ожидает, что SQL будет работать на порте по умолчанию, который обычно равен 3306. Поскольку наша версия MAMP по умолчанию использует порт 8889, мы решили, что это может быть проблемой.
В конце концов, вот как выглядит наш wp-config.php, и теперь все работает:
/** MySQL hostname */ define('DB_HOST', '127.0.0.1:8889');
Мы надеемся, что сможем спасти кому-то лишнее время в решении этой проблемы.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.