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" теперь работает для этого специального приложения.