Est-ce que quelqu'un sait pourquoi mon /var/run/mysqld/mysqld.sock
fichier socket ne serait pas sur mon ordinateur lorsque j'installe (ou réinstalle) MySQL 5.1?
En ce moment, lorsque j'essaie de démarrer un serveur avec mysqld, j'obtiens des erreurs comme Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
, mais la création d'un fichier vierge avec ce nom (comme suggéré sur les forums ubuntu) n'a pas réussi.
J'ai utilisé à la fois mysql et postgres jusqu'à ce que je passe à natty il y a peu de temps; J'ai passé des heures à parcourir les deux bases de données pour essayer de comprendre ce qui se passe. Je peux abandonner les postgres, mais je ne peux pas travailler sans une copie de travail de mysql.
La partie la plus étrange: j'utilise Kubuntu, et ma compréhension est que KDE utilise mysql pour stocker les autorisations des utilisateurs, etc. Je ne rencontre aucun problème d'autorisations bizarre; puis-je prendre cela pour signifier que (en quelque sorte?) MySQL fonctionne réellement?
Peut-être que ces fichiers socket vivent dans un endroit différent dans natty? Serait-il plus facile de réinstaller simplement le système d'exploitation? À ce stade, je suis ouvert à toute suggestion qui arrêtera de perdre mon temps.
la source
/var/run/mysqld/mysqld.sock
sera créé. Comme l'a dit @Paul, vous devez supprimer tout fichier que vous placez à cet emplacement.Réponses:
Un fichier socket ne contient pas réellement de données, il les transporte. Il s'agit d'un type de fichier spécial et inhabituel créé avec des appels / commandes système spéciaux. Ce n'est pas un fichier ordinaire.
C'est comme un canal que le serveur et les clients peuvent utiliser pour se connecter et échanger des demandes et des données. De plus, il n'est utilisé que localement. Son importance est simplement comme un lieu de rendez-vous convenu dans le système de fichiers.
La création d'un ancien fichier brut et son placement à cet emplacement peuvent en fait interférer avec la création du serveur ... et ainsi empêcher les clients locaux de se connecter au serveur.
Ma recommandation est de supprimer tout fichier que vous placez à l'emplacement. Le fichier socket spécial est créé par le serveur.
la source
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
Lorsque vous spécifiez
host=localhost
, le client mysql essaiera de se connecter au serveur mysql en utilisant un canal nommé unix qui nécessite un.sock
fichier.Cela peut être contourné en spécifiant host = 127.0.0.1. Cela obligera le client mysql à utiliser TCP pour se connecter au serveur.
Tiré de la documentation de MySQL :
la source
mysql.sock
disparaître sans raison valable dans chaque version de MySQL avec laquelle j'ai travaillé (retour à 4.0). Lorsque cela se produit, je me connecte comme ça, mais j'utilise à la--protocol=tcp
place de--port
. Lorsque vous arrêtez mysql, le service recherche le fichier socket. Ainsi, l'exécutionservice mysql stop
échouerait. Pour contourner le mal de tête du fichier socket manquant, je coursmysqladmin -h127.0.0.1 --protocol=tcp -uroot -p shutdown
. Oh, BTW, +1 !!!Une socket est un pseudo-fichier spécial utilisé pour la transmission de données par lecture et écriture, pas pour le stockage de données.
Le fichier socket est créé au démarrage du service et supprimé à la fin du service. L'emplacement du fichier est défini
/etc/my.cnf
comme suit :la source
Dans mon cas, l'exécution a
mysqld_safe
créé un nouveaumysqld.sock
fichier.Vous ne recevrez probablement pas d'invite, mais si vous redémarrez votre session, un fichier mysqld.sock sera quelque part. Trouvez-le avec
la source
J'ai eu le même problème avec le mysqld.sock manquant. Je suis allé dans le répertoire qui contenait mysql, à savoir
/usr/bin
dans mon cas. Ensuite, j'ai émis la commandeLe double mysql n'est pas une faute de frappe mais plutôt mysql est une base de données qui sera toujours là dans une nouvelle installation MySQL. Je ne sais pas si
--host
,--password
ou--port
sont nécessaires, mais comme cela a fonctionné pour moi en utilisant ces paramètres, je les inclue. Une fois que MySQL est apparu, je suis entré dans la table utilisateur pour définir le mot de passe de root. Une fois MySQL lancé, le fichier socket manquant a été créé. J'espère que cela aide quelqu'un puisque j'ai eu du mal pendant des jours.la source
Si vous utilisez nginx php-fastcgi et que vous avez obtenu une erreur 502 Bad Gateway , vous devez regarder votre configuration d'hôte virtuel sur le fichier de configuration nginx. Vous devez définir ou corriger le
fastcgi_pass
paramètre. Ilfastcgi_pass
s'agit de la variable permettant de définir la connexion socket entre nginx et php CGI.Un autre problème est que le script de démarrage binaire pourrait manquer les entrées suivantes (importantes) ouvertes avec:
nano /usr/bin/php-fastcgi
Le contenu complet de mon script de démarrage / usr / bin / php-fastcgi:
la source