Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 Unix 소켓 대신 TCP로 연결하도록 설정하는 방법

MySQL 클라이언트의 전송 프로토콜 개요

mysql, mysqldump처럼 MySQL 클라이언트 라이브러리를 사용하는 프로그램은 TCP/IP, 유닉스 소켓 파일, 명명된 파이프(named pipe), 공유 메모리 등 다양한 전송 프로토콜을 통해 MySQL 서버에 연결할 수 있습니다.

특정 연결에 대해 전송 프로토콜이 별도로 지정되지 않으면, MySQL이 환경에 맞게 자동으로 판단하여 프로토콜을 선택합니다.

기본 동작 예시

localhost로 연결할 경우, 유닉스 및 유닉스 계열 시스템에서는 소켓 파일 연결이 사용되고, 그 외의 시스템에서는 127.0.0.1로의 TCP/IP 연결이 사용됩니다. 따라서 유닉스 환경에서 의도적으로 TCP 연결을 강제하고 싶다면 프로토콜을 명시적으로 지정해야 하며, 이때 --protocol 커맨드 옵션을 사용합니다.

mysql --protocol=TCP -h localhost -u 사용자명 -p

--protocol 옵션에 허용되는 값

아래 표는 --protocol 옵션에 지정할 수 있는 값과 각 값이 사용하는 전송 방식, 적용 가능한 플랫폼을 보여줍니다. 값은 대소문자를 구분하지 않습니다.

--protocol 값사용되는 전송 프로토콜적용 플랫폼
TCPTCP/IP모든 플랫폼
SOCKET유닉스 소켓 파일유닉스 및 유닉스 계열 시스템
PIPE명명된 파이프Windows
MEMORY공유 메모리Windows

TCP/IP 전송 방식은 로컬 서버뿐 아니라 원격 MySQL 서버에도 연결할 수 있습니다. 반면 소켓 파일, 명명된 파이프, 공유 메모리 방식은 로컬 MySQL 서버 연결만 지원합니다. 참고로 명명된 파이프 방식 자체는 원격 연결을 허용하지만, 현재 MySQL에는 아직 해당 기능이 구현되어 있지 않습니다.

전송 프로토콜을 지정하지 않은 경우

전송 프로토콜이 지정되지 않으면 localhost는 다음과 같이 해석됩니다.

  • 유닉스 및 유닉스 계열 시스템에서는 localhost 연결이 소켓 파일 연결로 처리됩니다.

  • 그 외의 시스템에서는 localhost 연결이 127.0.0.1로의 TCP/IP 연결로 처리됩니다.

전송 프로토콜을 지정한 경우

전송 프로토콜이 명시적으로 지정되면, localhost는 해당 프로토콜의 규칙에 따라 해석됩니다. 예를 들어 --protocol=TCP를 지정하면 localhost라도 실제로는 TCP/IP를 통해 연결됩니다. 이 방식은 소켓 파일 권한 문제나 소켓 경로 불일치로 인한 연결 오류를 우회해야 할 때 특히 유용합니다.