MySQLクライアント(などmysql
)を使用している場合、Unixソケットファイルを使用してサーバーに接続したのか、TCP / IPを使用してサーバーに接続したのかを判断するにはどうすればよいですか?
MySQLクライアント(などmysql
)を使用している場合、Unixソケットファイルを使用してサーバーに接続したのか、TCP / IPを使用してサーバーに接続したのかを判断するにはどうすればよいですか?
回答:
使用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
Unixソケットファイル接続はTCP / IPより高速ですが、同じコンピューター上のサーバーに接続する場合にのみ使用できます。