Symfony 2 sqlstate[HY000] [2002] ошибка отказа в подключении

Я получаю ошибку, как операции с базой данных, используя Symfony2.

SQLSTATE[HY000] [2002] Connection refused

параметры.в формате 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

как устранить ошибку?

11 ответов


есть параметр unix_socket вы можете использовать в вашей конфигурации.в формате 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

у меня была та же проблема и починил его изменение

database_host: 127.0.0.1

to

database_host: localhost

в параметрах.в формате YML

надеюсь, это поможет


On Mac OSX используя Mamp Pro, то, что решило проблему для меня, шло в в MySQL вкладка в пользовательском интерфейсе и проверка опции разрешить доступ к сети MySQL

Не забудьте нажать на кнопку сохранить для обновления настроек

enter image description here


У меня была та же проблема с использованием 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


Это немного глупо, но я прибыл на этот пост, гугля ту же ошибку, так что, возможно, это может помочь кому-то.

в случае, если у вас есть это соединение отказано ошибка дважды проверьте, что ваша база данных работает, в моем случае я просто забыл включить MAMP...


увидев ответы и поиграв с этим сам, я понял проблему:

установка по умолчанию LAMPP, MAMPP имеет следующее в my.cnf файл:

skip-networking

это означает, что mysql не будет слушать TCP/IP, поэтому вы можете сказать доктрине попробовать любой порт в 64K, и это не принесет никакой пользы, пока вы не прокомментируете директиву выше и не заставите mysql слушать порты TCP/IP.

пожалуйста, убедитесь, что вы перезапустить LAMPP, MAMPP или перезагрузить mysql после комментирования


Если кто-то все еще застрял в этой проблеме при использовании виртуальная среда, Я нашел, если вы пытаетесь запустить команды базы данных на главной машине и запускаете "connection refused" ошибки, попробовать ssh-ing в гостевой машине и запуск команд непосредственно так путь к mysql.носок прав.

(Я думаю, имеет смысл, что относительный путь должен быть на виртуальной гостевой машине, а не на хост-машине).


настройка symfony2 / doctrine для подключения к MySQL с помощью host: port

  • комментарий 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:   ~

работает на 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.по умолчанию в Macintosh HD / private / etc (используйте spotlight поиска, чтобы найти этот скрытый файл).


сегодня на новой установке 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 to localhost in файл конфигурации Symfony app/config/parameters.yml

реальная причина проблемы заключалась не в конфигурации Symfony, а в авторизации на сервере базы данных. Я создал базу данных и авторизацию для этой базы данных, выполнив следующие SQL-запросы:

CREATE DATABASE user CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON database.* TO user@localhost IDENTIFIED BY 'password';

этот запрос подразумевает, что авторизован только хост "localhost". Это не соответствует '127.0.0.1' точно. Сервер базы данных отклоняет входящее соединение, а Symfony создает исключение и отображение этого сообщения об ошибке.

возможные решения этой конкретной ситуации:

  1. изменить параметр database_host
  2. изменить авторизацию внутри сервера баз данных

была эта проблема "SQLSTATE[HY000] [2002] нет такого файла или каталога" на symfony 3.2.9 при развертывании

я исправил это, изменив значение database_host с "localhost" на мой IP-адрес сервера по моим параметрам.файл YML

но у меня было еще одно сообщение об ошибке при попытке запустить командную строку по SSH:

[Doctrine\DBAL\Exception\ConnectionException]
  An exception occured in driver: SQLSTATE[HY000] [2002] Connection refused

я окончательно исправлю это, добавив эти 2 строки в мою конфигурацию.файл yml в разделе конфигурации доктрины:

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

надеюсь, это поможет