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?
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
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
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
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 ...
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
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
.
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).
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é).
doctrine.dbal.path: %database_path%
dans app/config/config.yml
database_path
à partir de app/config/parameters.yml
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: ~
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:
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: