web-dev-qa-db-ja.com

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

エラーを解決するにはどうすればよいですか?

14
kemal

パラメーターがありますnix_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
13
Marc Juchli

私は同じ問題を抱えていて、それを変更して修正しました

database_Host: 127.0.0.1

database_Host: localhost

parameters.ymlで

うまくいけば、これが役立つ

35
izus

Mac OSXMamp Proを使用して、問題を解決したのはUIのMySQLタブに移動し、オプションを確認しますMySQLへのネットワークアクセスを許可します

Saveをクリックして設定を更新することを忘れないでください

enter image description here

14
Truchainz

[〜#〜] mamp [〜#〜]を使用すると、デフォルトのポートが3306 だが 8889

MAMPの開始Webページでその情報を見つけることができます。

私のパラメーター

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
7
Ema.jar

これは少し愚かですが、私は同じエラーをグーグルでこの投稿に着いたので、おそらくこれは誰かを助けることができます。

この接続を拒否した場合、データベースが稼働していることをエラーで再確認してください。私の場合、MAMPの電源を入れるのを忘れました...

4
Kaizoku Gambare

この問題は「SQLSTATE [HY000] [2002] No such file or directory」symfony 3.2.9 on deployment

Parameters.ymlファイルでdatabase_Host値を「localhost」からサーバーIPに変更することで修正しました

しかし、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=設定はこのようなものです:

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

うまくいけば、これが役立つ

2
aina

答えを見て、自分でこれをいじってみたところ、問題がわかりました。

LAMPPのデフォルトのインストールであるMAMPPのmy.cnfファイルには次のものがあります。

skip-networking

これは、mysqlがTCP/IPをリッスンしないため、doctrineに64Kのポートを試すように伝え、上記のディレクティブをコメントアウトしてmysqlを取得するまで何の効果もありませんTCP/IPポートをリッスンする。

skip-networkingディレクティブをコメントアウトした後、LAMPP、MAMPPを再起動するか、mysqlをリロードしてください。

2
John the Ripper

仮想環境を使用しているときにこの問題が解決しない場合、ホストマシンでデータベースコマンドを実行して"connection refused"エラー、ゲストマシンへのSSHを試して、mysql.sockへのパスが正しいようにコマンドを直接実行します。

(相対パスは、ホストマシンではなく仮想ゲストマシン上にある必要があることは理にかなっていると思います)。

2
ChristoKiwi

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(application/MAMP/conf/phpX.XXで-MAMP設定で現在のバージョンを確認)またはphpでextension=php_pdo_mysql.dllを有効にすることを忘れないでください。 Macintosh HD/private/etcのiniおよび/またはphp.ini.default(スポットライト検索を使用して、この隠しファイルを見つけます)。

1
ngduflo

Host:portを使用してMySQLに接続するためのsymfony2/doctrineの設定

  • doctrine.dbal.path: %database_path%app/config/config.ymlをコメントアウトします
  • パラメーターdatabase_pathapp/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:   ~
1

今日、Symfony3の新規インストールで同じエラーが発生しました。

SQLSTATE [HY000] [2002]許可が拒否されました

インストール仕様:

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

Izusによる以前の回答は、私のサーバーの問題を解決しました。彼は、パラメータdatabase_Host from 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 user@localhost IDENTIFIED BY 'password';

このクエリは、ホスト「localhost」のみが許可されていることを意味します。これは「127.0.0.1」と正確には一致しません。データベースサーバーは着信接続を拒否し、Symfonyは例外をスローしてこのエラーメッセージを表示しています。

この特定の状況に対する可能な解決策:

  1. Database_Hostパラメーターを変更する
  2. データベースサーバー内の承認を変更する
1
acropia

MAMP PROで「mysqlへのネットワークアクセスを許可する」を有効にし、「php artisan migrate」がその特別なアプリで動作するようになりました。

1
eocookie