Je viens juste de réinstaller mysql et j'ai un problème pour le démarrer. Il ne peut pas trouver le socket (mysql.sock). Le problème est que ni l'un ni l'autre ne le peut. Sur mon terminal Mac OS X 10.4, je tape: locate mysql.sock
et je récupère /private/tmp/mysql.sock
. Il est logique que le fichier de socket existe à cet emplacement, mais ce n'est pas le cas.
Comment trouver le fichier de socket?
Si localiser renvoie un faux emplacement, il doit avoir une sorte de mémoire et probablement des index. Comment puis-je actualiser cet index?
pour répondre à la première partie de votre question:
courir
% mysqladmin variables
et vérifiez la variable 'socket'
Cela a résolu mon problème
mysql_config --socket
METTRE À JOUR
mysql_config peut nous dire où doit se trouver le fichier mysql.sock, mais dans mon cas, le fichier n'existait pas. Donc, j'ai supprimé my.cnf:
Sudo rm -rf /etc/my.cnf
Et puis redémarré mysql:
brew services restart mysql
Le fichier a été créé et mysql fonctionne bien maintenant.
Le fichier de socket doit être créé automatiquement au démarrage du démon MySQL.
S'il n'est pas trouvé, le répertoire supposé le contenir n'existe pas ou un autre problème de système de fichiers empêche la création du socket.
Pour savoir où le fichier devrait être, utilisez:
% mysqld --verbose --help | grep ^socket
Cela l'a trouvé pour moi:
netstat -ln | grep mysql
Mac OS X
Mon problème était aussi le fichier mysql.sock.
Pendant le processus d'installation de Drupal, je devais dire quelle base de données je voulais utiliser Mais ma base de données n'a pas été trouvée
mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock
le système recherche mysql.sock mais il se trouve dans le mauvais répertoire
tout ce que vous avez à faire est de le lier;)
il m'a fallu beaucoup de temps pour rechercher toutes les informations importantes sur Google, mais il m'a fallu des heures pour savoir comment m'adapter, mais je peux maintenant présenter le résultat: D
ps: si vous voulez être exactement, vous devez lier votre /tmp/mysql.sock-file
(s'il se trouve également dans votre système) au répertoire indiqué par le php.ini (ou php.default.ini) où pdo_mysql.default_socket= ...
J'ai le chemin exact en utilisant:
netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock'
Etant donné que ceci ne renvoie que le chemin et ne nécessite aucune entrée, vous pouvez potentiellement l'utiliser dans un script Shell.
MySQL doit être en cours d'exécution sur votre ordinateur pour que cela fonctionne. Fonctionne aussi pour MariaDB.
Les questions initiales semblent provenir d'une confusion sur a) où se trouve le fichier, et b) où est-il recherché (et pourquoi ne pouvons-nous pas le trouver ici lorsque nous effectuons une localisation ou un grep). Je pense que le point de vue d'Alnitak était que vous voulez trouver où il était lié - mais grep ne vous montrera pas de lien, n'est-ce pas? Le fichier n'y habite pas, puisqu'il s'agit d'un lien, il ne s'agit que d'un pointeur. Vous devez toujours savoir où mettre le lien.
mon fichier chaussette est définitivement dans/tmp et l'ERREUR que je reçois le cherche dans/var/lib/(pas seulement/var). J'ai lié à/var et/var/lib maintenant, et j'obtiens toujours l'erreur "Impossible de se connecter au serveur MySQL local via le socket 'var/lib/mysql.sock' (2)".
Notez le (2) après l'erreur .... J'ai trouvé sur un autre thread que cela signifie que le socket pourrait bien être utilisé, mais qu'il y a un problème avec le socket lui-même - afin d'éteindre la machine - complètement - de sorte que la prise se ferme. Ensuite, un redémarrage devrait résoudre le problème. J'ai essayé cela, mais cela n'a pas fonctionné pour moi (maintenant je me demande si j'ai redémarré trop vite? Vraiment?) Ce sera peut-être une solution pour quelqu'un d'autre.
$ mysqladmin variables | grep sock
Essayez plutôt ceci, cela produira le résultat demandé, en vous débarrassant des informations non liées.
(Q1) Comment puis-je trouver le fichier de socket?
L'emplacement par défaut du fichier de socket est /tmp/mysql.sock. Pour trouver le fichier de socket de votre système, utilisez ceci.
mysqladmin variables | grep socket
Si vous venez d'installer MySql, le fichier mysql.sock ne sera pas créé avant le démarrage du serveur. Utilisez cette commande pour le démarrer.
Sudo launchctl load -F /Library/LaunchDaemons/com.Oracle.oss.mysql.mysqld.plist
Si un mot de passe vous est demandé, vous pouvez passer le nom d'utilisateur root ou un autre nom d'utilisateur comme celui-ci. Terminal vous demandera le mot de passe.
mysqladmin --user root --password variables | grep socket
(Q2) Comment puis-je actualiser l'index de localisation
Actualisez la base de données de localisation avec cette commande.
Sudo /usr/libexec/locate.updatedb
Pour actualiser la base de données de localisation, j'ai exécuté
/usr/libexec/locate.updatedb
Je n'arrivais pas à trouver le socket mysql, donc j'ai réinstallé le serveur mysql (toutes les tables et tous les paramètres phpmyadmin ont été conservés). Voici les commandes:
1) Installer
Sudo apt-get installer mysql-server
2) Suivez les étapes de configuration du terminal
Sudo mysql_secure_installation
3) Vérifier l'état: (doit renvoyer "Actif: actif (en cours d'exécution)")
statut systemctl mysql.service
Malheureusement, aucun des éléments ci-dessus n'a fonctionné dans mon cas. Mais finalement j'ai trouvé des solutions.
Pour trouver où se trouve le fichier mysql.sock, ouvrez simplement xampp manager, sélectionnez MySQL et cliquez sur Configurer à droite. Dans le panneau de configuration, cliquez sur Ouvrir le fichier de configuration et recherchez simplement mysql.sock en appuyant sur le raccourci CMD + F.
Dans mon cas, le propriétaire de mysql.sock a été changé et je devais le redéfinir en administrateur root avec: chmod root: admin mysql.sock
Après cela, la base de données avait été consultée.