Symfony 2 SQLSTATE [HY000] [2002]连接被拒绝错误

问题描述 投票:13回答:12

我得到一个错误,如使用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

我该如何解决错误?

symfony pdo doctrine dbal
12个回答
13
投票

您可以在config.yml中使用参数unix_socket。

查看完整配置示例:

# 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

1
投票

在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失去了很多时间,但是没有用。

初学者提示:

不要忘记删除分号;以在php.ini中启用extension=php_pdo_mysql.dll(在application / MAMP / conf / phpX.XX中 - 在MAMP设置中检查当前版本)和/或在php.ini和/或php.ini中。在Macintosh HD / private / etc中默认(使用spotlight搜索来查找此隐藏文件)。


1
投票

今天在Symfony3的全新安装上我遇到了同样的错误:

SQLSTATE [HY000] [2002]权限被拒绝

安装规格:

  • S和Sぃx 7. 2 1511
  • Symfony 3.1.2
  • MariaDB 5.5.47
  • PHP 7.0.8

izus的早期答案确实解决了我服务器上的问题。他建议在Symfony配置文件database_host中将参数127.0.0.1localhost更改为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. 更改数据库服务器内的授权

1
投票

在MAMP PRO我激活了“允许网络访问mysql”,我的“php artisan migrate”现在正在为这个特殊的应用程序工作。


35
投票

我遇到了同样的问题并修改了它

database_host: 127.0.0.1

database_host: localhost

在parameters.yml中

希望这会有所帮助


13
投票

在使用Mamp Pro的Mac OSX上,为我解决问题的是访问UI上的MySQL选项卡并选中允许网络访问MySQL的选项

不要忘记单击“保存”以更新设置

enter image description here


7
投票

我使用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

4
投票

这有点愚蠢,但我在谷歌搜索相同的错误,所以也许这可以帮助某人。

如果你有这个连接被拒绝错误,请仔细检查你的数据库是否正常运行,在我的情况下,我只是忘了启动MAMP ......


2
投票

在看到答案并自己玩这个后,我发现了问题:

LAMPP的默认安装,MAMPP在my.cnf文件中有以下内容:

skip-networking

这意味着mysql不会监听TCP / IP,因此您可以告诉doctrine尝试64K中的任何端口,并且在您注释掉上面的指令并让mysql监听TCP / IP端口之前它不会有任何好处。

请确保在注释掉skip-networking指令后重新启动LAMPP,MAMPP或重新加载mysql。


2
投票

如果有人在使用虚拟环境时仍然遇到此问题,我发现如果您尝试在主机上运行数据库命令并遇到"connection refused"错误,请尝试ssh到您的来宾计算机并直接运行命令,以便mysql.sock的路径是正确的。

(我想有意义的是,相对路径需要在虚拟客户机上,而不是主机上)。


2
投票

在symfony 3.2.9上发布了这个问题“SQLSTATE [HY000] [2002]没有这样的文件或目录”

我通过在parameters.yml文件中将database_host值从“localhost”更改为我的服务器IP来修复它

但在尝试通过SSH运行命令行时,我收到了另一条错误消息:

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

我最后通过在Doctrine配置部分的config.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

希望这会有所帮助


1
投票

配置symfony2 / doctrine以使用host:port连接到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:   ~
© www.soinside.com 2019 - 2024. All rights reserved.