J'essaye de configurer WordPress. J'ai Apache et MySQL en cours d'exécution, et les comptes et la base de données sont tous configurés. J'ai essayé de faire une connexion simple:
<?php
$conn = mysql_connect('localhost', 'USER', 'PASSWORD');
if(!$conn) {
echo 'Error: ' . mysql_errno() . ' - ' . mysql_error();
}
?>
Et je comprends toujours ceci:
Erreur: 2002 - Aucun fichier ou répertoire de ce type
De quel fichier ou répertoire pourrait-il parler?
Je suis sur un OS X Snow Leopard, en utilisant l'Apache intégré. J'ai installé MySQL en utilisant le dmg x86_64.
MISE À JOUR: J'ai trouvé que le socket est à /tmp/mysql.sock, donc dans php.ini, j'ai remplacé toutes les occurrences du mauvais chemin par cela.
php
mysql
connection
mk12
la source
la source
/etc/init.d/mysql start
si vous êtes sur une distribution de base Debian. en cas d'échec, vérifiez le/etc/my.cnf
fichier pour le chemin du fichier de socket mysql correct.Réponses:
Si vous utilisez Linux: le chemin d'accès au fichier mysql.sock est incorrect. C'est généralement parce que vous utilisez (LAMPP) XAMPP et ce n'est pas dans /tmp/mysql.sock
Ouvrez le fichier php.ini et recherchez cette ligne:
Et fais-le
la source
localhost
de fonctionner et TCP / IP fonctionne donc le changer en adresse TCP / IP127.0.0.1
fonctionnera.J'ai eu un problème similaire et j'ai pu le résoudre en adressant mon mysql avec
127.0.0.1
au lieu delocalhost
.Cela signifie probablement que j'ai quelque chose qui ne va pas dans la configuration de mes hôtes, mais cette solution rapide me permet de continuer.
la source
code
127.0.0.1 localhostcode
. Ce qui me rend curieux de savoir pourquoi la connexion via localhost n'a pas fonctionné. Si quelqu'un pouvait m'éclairer, je serais heureux.localhost
de fonctionner et TCP / IP fonctionne donc le changer en adresse TCP / IP127.0.0.1
fonctionnera.Ceci est pour Mac OS X avec l' installation native d'Apache HTTP et l' installation personnalisée de MySQL .
La réponse est basée sur l'excellente réponse de @ alec-gorge, mais comme j'ai dû rechercher sur Google des modifications spécifiques pour la configurer dans ma configuration, principalement spécifique à Mac OS X, j'ai pensé l'ajouter ici par souci d'exhaustivité.
Activer la prise en charge de PHP5 pour Apache HTTP
Assurez-vous que le support PHP5 est activé dans
/etc/apache2/httpd.conf
.Modifiez le fichier avec
sudo vi /etc/apache2/httpd.conf
(entrez le mot de passe lorsque vous y êtes invité) et décommentez (supprimez;
du début de) la ligne pour charger le module php5_module .Démarrez Apache HTTP avec
sudo apachectl start
(ourestart
s'il est déjà démarré et doit être redémarré pour relire le fichier de configuration).Assurez-vous que
/var/log/apache2/error_log
contient une ligne qui vous indique que le php5_module est activé - vous devriez voirPHP/5.3.15
(ou similaire).Recherche du nom du fichier Socket
Lorsque MySQL est opérationnel (avec
./bin/mysqld_safe
), des lignes de débogage doivent être imprimées sur la console qui vous indiquent où vous pouvez trouver les fichiers journaux. Notez le nom d'hôte dans le nom de fichier -localhost
dans mon cas - qui peut être différent pour votre configuration.Le fichier qui vient après
Logging to
est important. C'est là que MySQL enregistre son travail.Ouvrez le
localhost.err
fichier (encore une fois, le vôtre peut être nommé différemment), c'est-tail -1 /Users/jacek/apps/mysql/data/localhost.err
à- dire pour connaître le nom du fichier socket - ce devrait être la dernière ligne.Notez la
socket:
partie - c'est le fichier socket que vous devez utiliserphp.ini
.Il existe un autre moyen (certains disent un moyen plus simple) de déterminer l'emplacement du nom de fichier du socket en se connectant à MySQL et en exécutant:
Configurer PHP5 avec le support MySQL - /etc/php.ini
En parlant de php.ini ...
Dans le
/etc
répertoire, il y a le fichier /etc/php.ini.default . Copiez-le dans /etc/php.ini .Ouvrez
/etc/php.ini
et recherchez mysql.default_socket .La valeur par défaut
mysql.default_socket
est/var/mysql/mysql.sock
. Vous devriez le changer pour la valeur que vous avez notée précédemment - c'était/tmp/mysql.sock
dans mon cas.Remplacez le
/etc/php.ini
fichier pour refléter le nom du fichier socket:Vérification finale
Redémarrez Apache HTTP.
Vérifiez les journaux s'il n'y a pas d'erreur liée à PHP5. Aucune erreur signifie que vous avez terminé et PHP5 avec MySQL devrait fonctionner correctement. Félicitations!
la source
mysql_connect
, qui est le problème réel de la question d'origine et non un générique idée fausse de l'installation de logiciels.localhost
. Personne à la recherche d'aide sur la configuration de xamp sur macos arrivera ici en recherchant sur Google. C'est pourquoi j'ai utilisé le terme «merde». Ce fil n'a rien à voir avec macos mais avec mysql uniquement (pas même php).Le remplacement de 'localhost' par '127.0.0.1' dans le fichier de configuration (connexion à la base de données) a aidé!
la source
Le redémarrage du serveur mysql peut aider. Dans mon cas, le redémarrage du serveur a permis de gagner beaucoup de temps.
PS - utilisation
sudo service mysql restart
pour un utilisateur non root.la source
Tout d'abord, assurez-vous que MySQL est en cours d'exécution. Commande: mysqld start
Si vous ne parvenez toujours pas à vous connecter, à quoi ressemble votre /etc/my.cnf? (ou /etc/msyql/my.cnf)
Les 2 autres messages sont corrects dans la mesure où vous devez vérifier votre socket car 2002 est une erreur de socket.
Un excellent tutoriel sur la configuration de LAMP est: http://library.linode.com/lamp-guides/centos-5.3/index-print
la source
/usr/local/mysql/mysql-test/include/default_my.cnf
, dois-je le copier en tant que my.cnf/etc
?Non pas que cela vous aide beaucoup, mais dans les versions récentes (et encore moins récentes ) de MySQL, le code d’erreur 2002 signifie «Impossible de se connecter au serveur MySQL local via socket [nom-de-socket]», donc cela pourrait vous dire un peu plus.
la source
En développant la réponse de Matthias D ici, j'ai pu résoudre cette erreur de 2002 sur MySQL et MariaDB avec des chemins exacts en utilisant ces commandes:
Commencez par obtenir le chemin réel vers le socket MySQL:
Ensuite, récupérez le chemin PHP :
En utilisant la sortie de ces deux commandes , liez-les:
Si cela revient, il
No such file or directory
vous suffit de créer le chemin vers le PHP mysql.sock, par exemple si votre chemin était,/var/mysql/mysql.sock
vous exécuteriez:Puis réessayez la commande sudo ln .
la source
Je vérifierais votre fichier php.ini et vérifierais que mysql.default_socket est correctement défini et également que votre mysqld est correctement configuré avec un fichier socket auquel il peut accéder. La valeur par défaut typique est "/tmp/mysql.sock".
la source
/var/mysql/mysql.sock
, mais ce chemin n'existe pas.J'ai rencontré ce problème aussi, puis j'ai modifié «localhost» en «127.0.0.1», cela fonctionne.
la source
dans mon cas, j'ai un problème avec mysqli_connect.
quand je veux me connecter
mysqli_connect('localhost', 'myuser','mypassword')
mysqli_connect_error () me renvoyer cette erreur "Aucun fichier ou répertoire de ce type"
cela a fonctionné pour moi
mysqli_connect('localhost:3306', 'myuser','mypassword')
la source
L'erreur 2002 signifie que MySQL ne peut pas se connecter au serveur de base de données local via le fichier socket (par exemple
/tmp/mysql.sock
).Pour savoir où se trouve votre fichier socket, exécutez:
vérifiez ensuite que votre application utilise le bon fichier de socket Unix ou connectez-vous via le port TCP / IP à la place.
Vérifiez ensuite si votre PHP a la bonne configuration de socket MySQL:
et assurez-vous que ce fichier existe .
Testez la prise:
Si la socket Unix est erronée ou n'existe pas, vous pouvez la créer un lien symbolique, par exemple:
ou corrigez votre fichier de configuration (par exemple
php.ini
).Pour tester la connexion PDO directement depuis PHP, vous pouvez exécuter:
Vérifiez également la configuration entre Apache et CLI (interface de ligne de commande), car la configuration peut être différente.
Voir: Dépannage des problèmes de connexion à MySQL
Autres utils / commandes qui peuvent aider à suivre le problème:
mysql --socket=$(php -r 'echo ini_get("mysql.default_socket");')
netstat -ln | grep mysql
php -r "phpinfo();" | grep mysql
php -i | grep mysql
xdebug.show_exception_trace=1
dans votrexdebug.ini
sudo dtruss -fn mysqld
, sur le débogage Linux avecstrace
stat $(mysql_config --socket)
et si vous avez suffisamment d'espace libre (df -h
).net.core.somaxconn
.la source
Assurez-vous que votre serveur local (MAMP, XAMPP, WAMP, etc.) fonctionne.
la source
J'avais un problème similaire.
Fondamentalement, le problème est qu'il y a probablement deux instances de mysql en cours d'exécution.
A) Un fonctionnant sur /etc/init.d
B) Lampe en cours d'installation sur / opt / lamp
Solution:
Étape 1: - Trouvez toutes les instances en cours d'exécution de mysql en utilisant commnad "find / | grep mysqld"
Étape 2: - Arrêtez les services en cours d'exécution sur /etc/init.d en utilisant le service mysql stop
Étape 3: - Redémarrez vos services Lamp en utilisant / opt / lamp / lamp restart
Vous devriez être prêt à partir :)
la source
Sur un Mac, avant de faire tout le travail acharné, vérifiez simplement vos paramètres
System Preferences > MySQL
. Plus souvent qu'autrement, j'ai vu l'équipe rencontrer ce problème depuisThe MySQL Server Instance is stopped
.Cliquez sur le
Start MySQL Server
bouton et la magie se produira.la source
J'utilise PHP-FPM ou plusieurs versions de php sur mon serveur. Dans mon cas, je mets à jour la valeur de mysqli car il n'y a pas de paramètre de socket par défaut de mysql:
à :
merci à @Alec Gorge
la source
J'ai eu le même problème. Ma socket a finalement été trouvée dans /tmp/mysql.sock. Ensuite, j'ai ajouté ce chemin à php.ini. J'ai trouvé la prise là-bas en vérifiant la page "État du serveur" dans MySQL Workbench. Si votre socket n'est pas dans /tmp/mysql.sock alors peut-être que MySQL Workbench pourrait vous dire où il se trouve? (Certes, vous utilisez MySQL Workbench ...)
la source
J'ai installé MySQL à l'aide du programme d'installation. En fait, il n'y avait pas de répertoire de données à côté du répertoire 'bin'.
Donc, j'ai créé manuellement le répertoire 'data' sous "C: \ Program Files \ MySQL \ MySQL Server 8.0". Et cela a fonctionné (changer le mot de passe root en suivant les étapes suggérées sur https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html .
la source
Digital Ocean MySql 2002-no-such-file-or-directory
Ajouter cette fin de fichier
/etc/mysql/my.cnf
Redémarrez MySql
service mysql restart
la source
J'ai également eu le même problème sur un serveur Linux. Ce qui m'a aidé est la commande ' sudo reboot ', qui est utilisée pour redémarrer le serveur Linux.
la source
activer et démarrer le service mariadb
sudo systemctl activer mariadb.service
sudo systemctl démarre mariadb.service
la source