Symfony 2 SQLSTATE [HY000] [2002] Соединение отклонено Ошибка
Я получаю ошибку, такую как операции с базой данных, используя Symfony2.
SQLSTATE[HY000] [2002] Connection refused
parameters.yml
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: '8889'
database_name: symfony
database_user: root
database_password: root
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
locale: tr
secret: ef9b4381fe75208f060b7c786951242bebcfb3c2
database_path: /private/var/mysql/mysql.sock
И консоль:
Kemal-Karakass-MacBook-Pro:~ kemalkarakas$ locate mysql.sock
/private/var/mysql/mysql.sock
Как разрешить ошибку?
Ответы
Ответ 1
Существует параметр unix_socket, который вы можете использовать в своем config.yml.
См. полный пример конфигурации:
# Doctrine Configuration
doctrine:
dbal:
default_connection: default
connections:
default:
driver: %database_driver%
dbname: %database_name%
user: %database_user%
host: %database_host%
password: %database_password%
unix_socket: /tmp/mysql.sock
Ответ 2
У меня была та же проблема и исправлено изменение
database_host: 127.0.0.1
к
database_host: localhost
в параметрах .yml
надеюсь, это поможет
Ответ 3
В Mac OSX с помощью Mamp Pro, для решения этой проблемы я перешел на вкладку MySQL в пользовательском интерфейсе и проверил опцию Разрешить доступ к сети MySQL
Не забудьте нажать Сохранить, чтобы обновить настройки
![введите описание изображения здесь]()
Ответ 4
У меня была та же проблема с использованием MAMP, потому что порт по умолчанию не 3306
а 8889
.
Вы можете найти эту информацию на начальной странице MAMP.
Мои параметры
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: '8889'
database_name: symfony_blog
database_user: root
database_password: root
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
locale: en
secret: 7f03537e81f981683bc773b9ec7113ab5861adec
database_path: null
Ответ 5
Это немного глупо, но я прибыл на это сообщение, отправив ту же ошибку, так что, возможно, это может помочь кому-то.
Если у вас есть это соединение, откажитесь от ошибки дважды проверьте, что ваша база данных запущена и работает, в моем случае я просто забыл включить MAMP...
Ответ 6
Увидев ответы и играя с этим, я понял, что проблема:
Установленная по умолчанию LAMPP, MAMPP имеет следующий файл my.cnf:
skip-networking
Это означает, что mysql не будет прослушивать TCP/IP, чтобы вы могли сказать доктрине попробовать любой порт в 64K, и это не принесет пользы, пока вы не прокомментируете приведенную выше директиву и не получите mysql для прослушивания TCP/IP порты.
Пожалуйста, убедитесь, что вы перезапустили LAMPP, MAMPP или перезагрузили mysql после комментирования директивы skip-networking
.
Ответ 7
Если кто-то все еще застрял в этой проблеме при использовании виртуальной среды, я обнаружил, что если вы пытаетесь запустить команды базы данных на главной машине и запущены в ошибке "connection refused"
, попробуйте ssh-ing на гостевую машину и запускать команды напрямую, поэтому правильный путь к mysql.sock.
(я предполагаю, что имеет смысл, что относительный путь должен находиться на виртуальной гостевой машине, а не на главной машине).
Ответ 8
Если эта проблема "SQLSTATE [HY000] [2002] Нет такого файла или каталога" на symfony 3.2.9 при развертывании
Я исправил это, изменив значение database_host с "localhost" на мой IP-адрес сервера в файле parameters.yml
но у меня возникло это еще одно сообщение об ошибке при попытке запустить командную строку с помощью SSH:
[Doctrine\DBAL\Exception\ConnectionException]
An exception occured in driver: SQLSTATE[HY000] [2002] Connection refused
Я окончательно исправлю это, добавив эти 2 строки в мой файл config.yml в разделе конфигурации Doctrine:
unix_socket: /var/lib/mysql/mysql.sock
server_version: '5.5'
вся моя окончательная конфигурация доктрины такова:
doctrine:
dbal:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
unix_socket: /var/lib/mysql/mysql.sock
server_version: '5.5'
charset: UTF8
надеюсь, это поможет
Ответ 9
Настройка symfony2/doctrine для подключения к MySQL с использованием хоста: порт
- комментарий
doctrine.dbal.path: %database_path%
в app/config/config.yml
- удалите/закомментируйте параметр
database_path
из app/config/parameters.yml
- проверьте файлы конфигурации для правильного отступа
- обернуть ни одно из значений в
app/config/parameters.yml
одинарные кавычки или поместить все в двойные кавычки.
После этого ваша конфигурация должна выглядеть так:
Параметры
# app/config/parameters.yml
parameters:
database_driver: "pdo_mysql"
database_host: "127.0.0.1"
database_port: "8889"
database_name: "symfony"
database_user: "root"
database_password: "root"
# comment out or remove
# database_path: ~
Конфигурация
# app/config/config.yml
# ...
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
# path is for pdo_sqlite: i.e. %kernel.root_dir%/data/data.db3
# comment it out !
# path: ~
Ответ 10
Запуск на MAMP, вот какая конфигурация /app/config/parameters.yml работает для меня:
parameters:
database_host: '127.0.0.1'
database_port: '8889'
database_name: test
database_user: root
database_password: root
Я потерял некоторое время с database_host: localhost
, который не сработал.
Советы для начинающих:
Не забудьте удалить точку с запятой ;
, чтобы включить extension=php_pdo_mysql.dll
в php.ini(в приложении /MAMP/conf/phpX.X.X - проверьте текущую версию в настройках MAMP)
и/или в php.ini и/или php.ini.default в Macintosh HD/private/etc (используйте поиск прожектора, чтобы найти этот скрытый файл).
Ответ 11
Сегодня на новой установке Symfony3 у меня была такая же ошибка:
SQLSTATE [HY000] [2002] Разрешение отклонено
Технические характеристики установки:
- CentOS Linux 7.2.1511
- Symfony 3.1.2
- MariaDB 5.5.47
- PHP 7.0.8
Более ранний ответ izus разрешил проблему на моем сервере. Он предлагает изменить параметр database_host
от 127.0.0.1
до localhost
в файле конфигурации Symfony app/config/parameters.yml
Реальное происхождение проблемы было не в конфигурации Symfony, а в авторизации внутри сервера базы данных. Я создал базу данных и авторизацию для этой базы данных, выполнив следующие SQL-запросы:
CREATE DATABASE user CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON database.* TO [email protected] IDENTIFIED BY 'password';
Этот запрос подразумевает, что только хост "localhost" разрешен. Это точно не соответствует "127.0.0.1". Сервер базы данных отклоняет входящее соединение, а Symfony генерирует исключение и показывает это сообщение об ошибке.
Возможные решения этой конкретной ситуации:
- Измените параметр database_host
- Изменить авторизацию внутри сервера базы данных
Ответ 12
В MAMP PRO я активировал "Разрешить сетевой доступ к mysql", и мой "php artisan migrate" теперь работает для этого специального приложения.