Comment puis-je déterminer la méthode de connexion utilisée par un client MySQL?

10

Lors de l'utilisation d'un client MySQL (par exemple mysql), comment puis-je déterminer s'il s'est connecté au serveur en utilisant un fichier socket Unix ou en utilisant TCP / IP?

Eugene Yarmash
la source

Réponses:

13

Trouver le transport

Essayez d'utiliser netstat -ln | grep 'mysql'et vous pouvez voir comment il est connecté par la sortie. si vous avez accès au shell

Sous Unix, les programmes MySQL traitent spécialement le nom d'hôte localhost, d'une manière qui est probablement différente de ce que vous attendez par rapport aux autres programmes basés sur le réseau. Pour les connexions à localhost, les programmes MySQL tentent de se connecter au serveur local en utilisant un fichier socket Unix.

Cela se produit même si une option --portou -Pest donnée pour spécifier un numéro de port.

Si yould comme de connaître le type de connexion de l' intérieur mysql CLI, utilisez la commande « l \ » (statut).

mysql> \s

La sortie aurait une ligne semblable à l'une des suivantes (sous Unix).

Connection:             127.0.0.1 via TCP/IP

ou

Connection:             Localhost via UNIX socket

Forcer un transport particulier

Pour vous assurer que le client établit une connexion TCP / IP avec le serveur local, utilisez --hostou -hpour spécifier une valeur de nom d'hôte de 127.0.0.1, ou l'adresse IP ou le nom du serveur local. Vous pouvez également spécifier explicitement le protocole de connexion, même pour localhost, en utilisant l' --protocol=TCPoption. Par exemple:

shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP

L' --protocol={TCP|SOCKET|PIPE|MEMORY}option spécifie explicitement un protocole à utiliser pour se connecter au serveur. Il est utile lorsque les autres paramètres de connexion entraînent normalement l'utilisation d'un protocole autre que celui que vous souhaitez. Par exemple, les connexions sur Unix à localhost sont établies en utilisant un fichier socket Unix par défaut:

shell> mysql --host=localhost

Pour forcer l'utilisation d'une connexion TCP / IP à la place, spécifiez une --protocoloption:

shell> mysql --host=localhost --protocol=TCP

Types de protocoles:

  • TCP: connexion TCP / IP au serveur local ou distant. Disponible sur toutes les plateformes.
  • SOCKET: connexion du fichier socket Unix au serveur local. Disponible sur unix uniquement.
  • PIPE: connexion de canal nommé au serveur local ou distant. Disponible uniquement sur les fenêtres.
  • MÉMOIRE: connexion à mémoire partagée au serveur local. Disponible uniquement sur les fenêtres.

Une connexion de fichier socket Unix est plus rapide que TCP / IP, mais ne peut être utilisée que lors de la connexion à un serveur sur le même ordinateur.

harish.venkat
la source
@Anil: merci, vous en avez fait une excellente réponse.
Eugene Yarmash