16

我收到类似使用 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

如何解决错误?

4

12 回答 12

40

我有同样的问题并修复它改变

database_host: 127.0.0.1

database_host: localhost

在参数.yml

希望这会有所帮助

于 2014-11-03T17:18:47.747 回答
16

On Mac OSX using Mamp Pro, what solved the problem for me was going to the MySQL tab on the UI and checking the option Allow network access to MySQL

Don't forget to click Save to update the settings

enter image description here

于 2016-02-24T20:15:24.017 回答
14

您可以在 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
于 2013-10-28T09:41:38.007 回答
8

I had the same problem using MAMP because the default port is not 3306 but 8889.

You can find that information in the MAMP starting web page.

My parameters

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
于 2014-08-03T17:36:53.557 回答
5

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

如果您有此连接被拒绝错误,请仔细检查您的数据库是否已启动并正在运行,在我的情况下,我只是忘记启动 MAMP ...

于 2016-02-16T19:12:27.017 回答
2

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

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

skip-networking

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

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

于 2014-02-19T12:44:43.813 回答
2

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

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

于 2016-01-06T09:22:41.150 回答
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

希望这会有所帮助

于 2018-02-09T19:37:42.063 回答
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:   ~
于 2013-10-28T09:34:19.507 回答
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,但没有奏效。

初学者提示:

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

于 2016-05-17T18:09:44.027 回答
1

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

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

安装规格:

  • CentOS Linux 7.2.1511
  • Symfony 3.1.2
  • MariaDB 5.5.47
  • PHP 7.0.8

izus 较早的回答确实解决了我服务器上的问题。他建议将Symfony 配置文件中的参数database_hostfrom127.0.0.1更改为localhostapp/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. 更改数据库服务器内部的授权
于 2016-07-16T14:30:54.240 回答
1

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

于 2019-04-16T17:20:17.497 回答