MySQL 클라이언트가 서버에 접속할 때 어떤 연결 방식을 사용하고 있는지 확인해야 하는 경우가 있습니다. 이 글에서는 현재 사용 중인 연결 방식을 확인하는 명령어와, 상황에 따라 연결 프로토콜을 지정하는 방법까지 자세히 알아보겠습니다.
netstat 명령으로 연결 방식 확인하기
MySQL 연결에 사용되는 연결 방식을 확인하려면 아래 명령어를 실행하면 됩니다.
netstat -ln | grep 'mysql'
참고로 Unix 환경에서는 MySQL 프로그램이 호스트 이름 'localhost'를 특별하게 취급합니다. 따라서 일반적으로 기대하는 동작과 다르게 작동할 수 있으니 이 점을 유의해야 합니다.
mysql CLI 내부에서 연결 유형 확인하기
mysql 커맨드 라인 인터페이스(CLI) 안에서 현재 연결 유형을 확인하려면 아래 명령어를 입력합니다.
mysql> \s
실행 결과는 다음과 같습니다.
Connection: 127.0.0.1 via TCP/IP (또는) Connection: Localhost via UNIX socket
로컬 서버에 TCP/IP로 연결하기
클라이언트가 로컬 서버에 TCP/IP 방식으로 연결되도록 강제하려면 --host 또는 -h 옵션을 사용하여 호스트 이름을 127.0.0.1로 지정하거나, 로컬 서버의 IP 주소 또는 이름을 지정하면 됩니다.
또한 localhost에 연결하는 경우에도 --protocol=TCP 옵션을 사용하면 연결 프로토콜을 명시적으로 지정할 수 있습니다. 예시는 다음과 같습니다.
shell> mysql --host=127.0.0.1 shell> mysql --protocol=TCP
--protocol={TCP|SOCKET|PIPE|MEMORY} 옵션은 서버에 접속할 때 반드시 특정 프로토콜을 사용하도록 명시적으로 지정하는 역할을 합니다.
Unix에서 localhost로 연결하기
Unix 환경에서 localhost로 연결할 때는 기본적으로 Unix 소켓 파일을 통해 연결이 이루어집니다. 아래 명령어처럼 실행하면 됩니다.
shell> mysql --host=localhost
만약 Unix 소켓 대신 TCP/IP 연결을 강제로 사용하고 싶다면 --protocol 옵션을 함께 지정하면 됩니다.
shell> mysql --host=localhost --protocol=TCP
프로토콜 종류 정리
MySQL에서 사용할 수 있는 주요 프로토콜 유형은 다음과 같습니다.
TCP — 로컬 또는 원격 서버에 TCP/IP 방식으로 연결합니다. 모든 플랫폼에서 사용 가능합니다.
SOCKET — Unix 소켓 파일을 통해 로컬 서버에 연결합니다. Unix 계열에서만 사용할 수 있습니다.
PIPE — 이름 있는 파이프(named pipe)를 통해 로컬 또는 원격 서버에 연결합니다. Windows에서만 사용할 수 있습니다.
MEMORY — 공유 메모리(shared memory)를 통해 로컬 서버에 연결합니다. Windows에서만 사용할 수 있습니다.
이처럼 운영체제와 연결 대상에 따라 적합한 프로토콜이 다르므로, 자신의 환경에 맞는 연결 방식을 \s 명령이나 netstat으로 확인하고 필요 시 --protocol 옵션으로 명시적으로 제어하는 것이 좋습니다.