Je voudrais analyser le mysql
trafic. Pour le moment, toutes les requêtes mysql sont envoyées à la socket MySQL Unix:
unix 2 [ ACC ] STREAM LISTENING 3734388 15304/mysqld /var/run/mysqld/mysqld.sock
J'essaie de désactiver ce socket pour forcer MySQL à utiliser le socket réseau à la place du bouclage. J'ai essayé de commenter toutes les socket
directives dans les my.cnf
et debian.cnf
fichiers et remis en marche MySQL , mais il n'a fait aucune différence.
Comment désactiver le socket Unix MySQL pour forcer MySQL sur le réseau?
informations supplémentaires: je cours MySQL 5.1
sur ubuntu 10.04
.
Précisions sur la question
Étant donné que de nombreuses personnes ont suggéré d'activer la prise réseau, j'aimerais clarifier ma question en précisant que l'adresse de liaison était déjà activée avec bind-address = 127.0.0.1
et qu'une connexion d'écoute était disponible:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 15601/mysqld
Je ne vois toujours aucune connexion tenter 127.0.0.1:3306
de sortir de mon application Web (site Web Drupal).
Mis à jour avec la réponse
Il semble en effet que le problème vienne du mysqli
connecteur utilisé par Drupal ( .ht_config.php
pour ceux qui sont intéressés). Il a été défini mysqli://drupal:***@localhost/drupal
:, changer localhost
pour 127.0.0.1
résoudre le problème (c’est-à-dire que Drupal est maintenant connecté à la prise réseau).
--protocol
.. voir la réponse de Jonathan.Dans Linux et d'autres * nixes, MySQL supposera que vous voulez utiliser un socket si vous vous connectez à l'hôte "localhost" (qui serait le nom d'hôte par défaut).
Vous pouvez remplacer ceci de 3 manières: 1) Spécifiez un nom d’hôte différent, tel que 127.0.0.1 (
mysql -h 127.0.0.1
) ou le nom d’hôte réel de votre serveur. 2) Spécifiez que vous souhaitez utiliser TCP et non un socket (mysql --protocol tcp
).Vous pouvez aussi facilement faire en sorte que ma modification par défaut soit votre my.cnf.
Vous pouvez voir la description complète de la façon dont MySQL décide comment se connecter ici:
http://dev.mysql.com/doc/refman/5.5/en/connecting.html
la source
N'est-ce pas vraiment un problème de client? Si vous utilisez le programme mysql Vous pouvez utiliser le
--protocol
commutateur. De la page de manuelJe viens d'essayer
tout en surveillant le port 3306 avec
tcpdump -i lo tcp port 3306
et je peux voir le trafic alors que si je viens de courirJe ne vois (correctement) pas de trafic sur le port 3306.
MODIFIER:
Maintenant que vous nous dites que vous utilisez DRUPAL, la solution est relativement simple.
Allez à
sites/<sitename>
ousites/default
et éditez lesettings.php
fichierVous trouverez une structure comme celle-ci
Changez le
'localhost'
en'127.0.0.1'
et sauvegardez le fichier.la source
no control
j'étais dramatique. Je pourrais modifier le.ht_config.php
fichier et résoudre le problème..ht_config.php
au lieu desettings.php
. Je ne sais pas pourquoi (l'équipe de développement a demandé que ce soit ainsi). Maintenant, le problème est que Drupal semble lire le.ht_config.php
fichier à chaque requête (car si je le modifie, les modifications sont immédiatement prises en compte), ce qui ne peut pas aider les performances. Nous rechercherons un moyen de mettre en cache ces paramètres au niveau de la couche application, mais le problème est différent.--protocol=socket
si vous avez unehost
entrée dans la[client]
section.my.cnf
qui donne unewrong or unknown protocol
erreur. (mysql 5.7.13)Cela peut sembler un peu fou
Essayez de définir le fichier de socket sur un chemin absolu dont le chemin réside sur une autre machine.
http://dev.mysql.com/doc/refman/5.0/fr/server-options.html#option_mysqld_socket
Sinon, vous ne pouvez pas contourner ce comportement par défaut car un fichier de socket doit exister pour que mysqld puisse communiquer.
la source
Editez le fichier my.cnf et ajoutez la directive
ou votre adresse IP préférée pour le rendre accessible sur le réseau. Redémarrez mysql après pour que cela fonctionne.
la source
Le client php mysqli utilisera un fichier de socket unix au lieu de tcp network lorsque vous passerez la valeur NULL ou la chaîne "localhost" ( http://www.php.net/manual/en/mysqli.construct.php )
il semble que le client sqlyog utilise toujours le réseau tcp même lorsque vous remplissez "localhost"
la source
Je devais supprimer /etc/my.cnf (après l'avoir sauvegardé), puis redémarrer le serveur. Ensuite, je pouvais me connecter avec un socket et l'erreur disparaissait.
la source