Wie kann ich die von einem MySQL-Client verwendete Verbindungsmethode ermitteln?

9

mysqlWie kann ich bei Verwendung eines MySQL-Clients (z. B. ) feststellen, ob eine Verbindung zum Server mithilfe einer Unix-Socket-Datei oder mithilfe von TCP / IP hergestellt wurde?

Eugene Yarmash
quelle

Antworten:

12

Transport finden

Versuchen Sie es mit netstat -ln | grep 'mysql'und Sie können sehen, wie es durch den Ausgang verbunden ist. wenn Sie Zugriff auf Shell haben

Unter Unix behandeln MySQL-Programme den Hostnamen localhost speziell auf eine Weise, die sich wahrscheinlich von den Erwartungen unterscheidet, die Sie im Vergleich zu anderen netzwerkbasierten Programmen erwarten. Bei Verbindungen zu localhost versuchen MySQL-Programme, mithilfe einer Unix-Socket-Datei eine Verbindung zum lokalen Server herzustellen.

Dies tritt auch dann auf, wenn eine --portoder -P-Option angegeben wird, um eine Portnummer anzugeben.

Wenn Sie den Verbindungstyp in der MySQL-CLI kennen möchten , verwenden Sie den Befehl '\ s' (Status).

mysql> \s

Die Ausgabe hätte eine Zeile wie eine der folgenden (unter Unix).

Connection:             127.0.0.1 via TCP/IP

oder

Connection:             Localhost via UNIX socket

Erzwingen eines bestimmten Transports

Verwenden Sie --hostoder -hgeben Sie einen Hostnamenwert von 127.0.0.1 oder die IP-Adresse oder den Namen des lokalen Servers an, um sicherzustellen, dass der Client eine TCP / IP-Verbindung zum lokalen Server herstellt. Mit der --protocol=TCPOption können Sie das Verbindungsprotokoll auch für localhost explizit angeben . Zum Beispiel:

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

Die --protocol={TCP|SOCKET|PIPE|MEMORY}Option gibt explizit ein Protokoll an, das für die Verbindung zum Server verwendet werden soll. Dies ist nützlich, wenn die anderen Verbindungsparameter normalerweise dazu führen, dass ein anderes als das gewünschte Protokoll verwendet wird. Beispielsweise werden Verbindungen unter Unix zu localhost standardmäßig mithilfe einer Unix-Socket-Datei hergestellt:

shell> mysql --host=localhost

Geben Sie eine --protocolOption an, um die Verwendung einer TCP / IP-Verbindung zu erzwingen :

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

Protokolltypen:

  • TCP: TCP / IP-Verbindung zum lokalen oder Remote-Server. Verfügbar auf allen Plattformen.
  • SOCKET: Unix-Socket-Dateiverbindung zum lokalen Server. Nur unter Unix verfügbar.
  • PIPE: Named-Pipe-Verbindung zum lokalen oder Remote-Server. Nur unter Windows verfügbar.
  • SPEICHER: Shared-Memory-Verbindung zum lokalen Server. Nur unter Windows verfügbar.

Eine Unix-Socket-Dateiverbindung ist schneller als TCP / IP, kann jedoch nur verwendet werden, wenn eine Verbindung zu einem Server auf demselben Computer hergestellt wird.

harish.venkat
quelle
@ Anil: Danke, du hast es zu einer exzellenten Antwort gemacht.
Eugene Yarmash