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
Не забудьте нажать на кнопку сохранить для обновления настроек
У меня была та же проблема с использованием 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 создает исключение и отображение этого сообщения об ошибке.
возможные решения этой конкретной ситуации:
- изменить параметр database_host
- изменить авторизацию внутри сервера баз данных
была эта проблема "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
надеюсь, это поможет