MySQL 클라이언트(예 mysql
: )를 사용할 때 서버에 연결하기 위해 Unix 소켓 파일을 사용하는지 아니면 TCP/IP를 사용하는지 어떻게 확인할 수 있습니까?
답변1
교통수단 찾기
시도해 보면 netstat -ln | grep 'mysql'
출력을 통해 어떻게 연결되는지 확인할 수 있습니다. 쉘에 접근할 수 있는 경우
Unix에서 MySQL 프로그램은 호스트 이름 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 연결을 설정하도록 하려면 호스트 이름 값 127.0.0.1 또는 로컬 서버의 IP 주소나 이름을 사용 --host
하거나 지정하십시오. -h
옵션을 사용하여 localhost에 대해서도 연결 프로토콜을 명시적으로 지정할 수도 있습니다 --protocol=TCP
. 예를 들어:
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보다 빠르지만 동일한 컴퓨터의 서버에 연결할 때만 사용할 수 있습니다.