MySQLクライアントで使用されている接続方法を確認するにはどうすればよいですか?


10

MySQLクライアント(などmysql)を使用している場合、Unixソケットファイルを使用してサーバーに接続したのか、TCP / IPを使用してサーバーに接続したのかを判断するにはどうすればよいですか?

回答:


13

トランスポートを見つける

使用netstat -ln | grep 'mysql'してみてください、そしてそれが出力によってどのように接続されているかを見ることができます。シェルにアクセスできる場合

Unixでは、MySQLプログラムはホスト名localhostを特別に扱います。これは、他のネットワークベースのプログラムと比較して、予想とは異なる可能性があります。localhostへの接続の場合、MySQLプログラムはUnixソケットファイルを使用してローカルサーバーへの接続を試みます。

これは、ポート番号を指定するために--portまたは-Pオプションが指定されている場合でも発生します。

mysql CLI から接続タイプを知りたい場合は、「\ s」(ステータス)コマンドを使用します。

mysql> \s

出力には、次のような行が含まれます(UNIXの場合)。

Connection:             127.0.0.1 via TCP/IP

または

Connection:             Localhost via UNIX socket

特定のトランスポートを強制する

クライアントがローカルサーバーへのTCP / IP接続を確立するようにするには、--hostまたは-hを使用して、ホスト名の値127.0.0.1、またはローカルサーバーのIPアドレスまたは名前を指定します。--protocol=TCPオプションを使用して、localhostの場合でも、接続プロトコルを明示的に指定することもできます。例えば:

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

この--protocol={TCP|SOCKET|PIPE|MEMORY}オプションは、サーバーへの接続に使用するプロトコルを明示的に指定します。通常、他の接続パラメータによって、必要なプロトコル以外のプロトコルが使用される場合に役立ちます。たとえば、Unixからlocalhostへの接続は、デフォルトでUnixソケットファイルを使用して行われます。

shell> mysql --host=localhost

代わりにTCP / IP接続を使用するには、--protocolオプションを指定します。

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

プロトコルタイプ:

  • TCP:ローカルサーバーまたはリモートサーバーへのTCP / IP接続。すべてのプラットフォームで使用できます。
  • SOCKET:ローカルサーバーへのUnixソケットファイル接続。UNIXでのみ使用できます。
  • PIPE:ローカルサーバーまたはリモートサーバーへの名前付きパイプ接続。Windowsでのみ使用できます。
  • MEMORY:ローカルサーバーへの共有メモリ接続。Windowsでのみ使用できます。

Unixソケットファイル接続はTCP / IPより高速ですが、同じコンピューター上のサーバーに接続する場合にのみ使用できます。


@アニル:ありがとう、あなたはそれを素晴らしい答えにしました。
ユージーンヤーマッシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.