web-dev-qa-db-fra.com

Symfony 2 SQLSTATE [HY000] [2002] Erreur de connexion refusée

Je reçois une erreur telle que des opérations de base de données utilisant Symfony2.

SQLSTATE[HY000] [2002] Connection refused

paramètres.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

Et console:

Kemal-Karakass-MacBook-Pro:~ kemalkarakas$ locate mysql.sock
/private/var/mysql/mysql.sock

Comment puis-je résoudre l'erreur?

12
kemal

Il existe un paramètre unix_socket que vous pouvez utiliser dans votre config.yml.

Voir exemple de configuration complète:

# 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
12
Marc Juchli

j'ai eu le même problème et le fixe en changeant 

database_Host: 127.0.0.1

à

database_Host: localhost

dans parameters.yml

j'espère que cela aide

33
izus

Sous Mac OSX sous Mamp Pro, le problème qui se posait pour moi était d'aller dans l'onglet MySQL de l'interface utilisateur et de cocher l'option Autoriser l'accès réseau à MySQL.

N'oubliez pas de cliquer sur Enregistrer pour mettre à jour les paramètres.

 enter image description here

13
Truchainz

J'ai eu le même problème en utilisant MAMP parce que le port par défaut n'est pas 3306 mais 8889. 

Vous pouvez trouver cette information dans la page Web de démarrage de MAMP.

Mes paramètres

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

C'est un peu stupide mais je suis arrivé sur ce post googler la même erreur, alors peut-être que cela peut aider quelqu'un.

Si vous avez cette connexion refusée Erreur Vérifiez à nouveau que votre base de données est opérationnelle et, dans mon cas, j'ai tout simplement oublié d'activer MAMP ...

4
Kaizoku Gambare

Vous aviez ce problème "SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type" sous symfony 3.2.9 lors du déploiement

Je l'ai corrigé en remplaçant la valeur database_Host de "localhost" par l'adresse IP de mon serveur sur mon fichier parameters.yml.

mais j'avais un autre message d'erreur lorsque j'essayais de lancer Commandline par SSH:

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

Je le répare finalement en ajoutant ces 2 lignes sur mon fichier config.yml dans la section de configuration de Doctrine:

unix_socket: /var/lib/mysql/mysql.sock
server_version: '5.5'

toute ma configuration finale de doctrine est comme ceci: 

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

j'espère que cela aide

2
aina

Après avoir vu les réponses et jonglé avec moi-même, j’ai compris le problème:

L'installation par défaut de LAMPP, MAMPP contient les éléments suivants dans le fichier my.cnf:

skip-networking

Cela signifie que mysql n'écoutera pas sur TCP/IP, donc vous pouvez indiquer à doctrine d'essayer n'importe quel port dans le 64K et cela n'aura aucun effet tant que vous n'aurez pas mis en commentaire la directive ci-dessus et obligé mysql à écouter les ports TCP/IP.

Assurez-vous de redémarrer LAMPP, MAMPP ou de recharger mysql après avoir commenté la directive skip-networking.

2
John the Ripper

Si quelqu'un est toujours bloqué sur ce problème lors de l'utilisation d'un environnement virtuel , j'ai trouvé que si vous essayez d'exécuter des commandes de base de données sur la machine hôte et que vous rencontrez l'erreur "connection refused", essayez ssh-ing sur votre ordinateur invité et en exécutant directement les commandes pour que le chemin d'accès à mysql.sock soit correct.

(Je suppose qu'il est logique que le chemin relatif doit être sur la machine invitée virtuelle, pas sur la machine hôte).

2
ChristoKiwi

Sous MAMP, voici la configuration de /app/config/parameters.yml qui a fonctionné pour moi:

parameters:
    database_Host: '127.0.0.1'
    database_port: '8889'
    database_name: test
    database_user: root
    database_password: root

J'ai perdu pas mal de temps avec database_Host: localhost, qui n'a pas fonctionné.

Conseils aux débutants:

N'oubliez pas de supprimer le point-virgule ; pour activer extension=php_pdo_mysql.dll dans php.ini (dans application/MAMP/conf/phpX.XX - vérifiez votre version actuelle dans les paramètres MAMP) Et/ou dans php.ini et/ou php .ini.default sous Macintosh HD/private/etc (utilisez la recherche par projecteur pour trouver ce fichier caché).

1
ngduflo

Configuration de symfony2/doctrine pour se connecter à MySQL en utilisant Host: port

  • commenter doctrine.dbal.path: %database_path% dans app/config/config.yml 
  • supprimer/commenter le paramètre database_path à partir de app/config/parameters.yml
  • vérifier vos fichiers de configuration pour l'indentation correcte
  • encapsuler aucune des valeurs entre guillemets simples app/config/parameters.yml ou tout mettre entre guillemets.

Ensuite, votre configuration devrait ressembler à ceci:

Paramètres

# 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: ~

Configuration

# 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
nifr

Aujourd'hui, sur une nouvelle installation de Symfony3, j'ai eu la même erreur:

SQLSTATE [HY000] [2002] Autorisation refusée

Spécifications d'installation:

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

Une réponse précédente d'izus a résolu le problème sur mon serveur. Il suggère de changer le paramètre database_Host de 127.0.0.1 à localhost dans le fichier de configuration Symfony app/config/parameters.yml

La véritable origine du problème ne se trouvait pas dans la configuration de Symfony, mais dans le serveur de base de données. J'ai créé la base de données et l'autorisation pour cette base de données en exécutant les requêtes SQL suivantes:

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

Cette requête implique que seul l'hôte 'localhost' est autorisé. Cela ne correspond pas exactement à '127.0.0.1'. Le serveur de base de données rejette la connexion entrante et Symfony lève une exception et affiche ce message d'erreur.

Solutions possibles à cette situation spécifique:

  1. Changer le paramètre database_Host
  2. Modifier l'autorisation à l'intérieur du serveur de base de données
1
acropia