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

MySQL 연결 전송 프로토콜 완벽 정리: TCP/IP부터 공유 메모리까지

mysql, mysqldump처럼 MySQL 클라이언트 라이브러리를 사용하는 프로그램은 다양한 전송 프로토콜을 통해 MySQL 서버에 접속할 수 있습니다. 대표적인 프로토콜로는 TCP/IP, Unix 소켓 파일, 명명된 파이프(Named Pipe), 공유 메모리(Shared Memory) 등이 있습니다.

이 글에서는 MySQL에서 사용되는 각 연결 전송 프로토콜의 특징과 보안 설정 방법까지 자세히 살펴보겠습니다.

--protocol 옵션에 허용되는 값

아래 표는 --protocol 옵션에 허용되는 값과 각 값이 적용 가능한 플랫폼을 보여줍니다. 참고로 이 값들은 대소문자를 구분하지 않습니다.

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

TCP/IP

TCP/IP 전송 방식은 로컬 서버뿐만 아니라 원격 MySQL 서버에도 접속할 수 있는 유일한 프로토콜입니다. 네트워크를 통한 연결이 필요한 환경이라면 반드시 TCP/IP를 사용해야 합니다.

명명된 파이프(Named Pipe)

명명된 파이프 전송 방식은 이론상 원격 연결도 허용하지만, 현재 MySQL에서는 아직 해당 기능이 구현되지 않았습니다. 따라서 로컬 MySQL 서버에 대한 연결만 지원합니다. TLS/SSL 암호화가 필수는 아닙니다.

소켓 파일(Socket File)

소켓 파일 전송 방식 역시 로컬 MySQL 서버에 대한 연결만 지원합니다. 다른 프로토콜과 달리 TLS/SSL 암호화를 적용할 수 있습니다.

공유 메모리(Shared Memory)

공유 메모리 전송 방식 또한 로컬 MySQL 서버에 대한 연결만 지원하며, TLS/SSL 암호화가 필수는 아닙니다.

연결을 안전하게 만드는 방법

연결은 기본적으로 보안성이 확보된 전송 프로토콜을 사용하면 자동으로 안전합니다. 그렇지 않은 경우, TLS/SSL 암호화를 지원하는 프로토콜이라면 암호화를 통해 보안 연결을 만들 수 있습니다. 프로토콜별 특징은 다음과 같습니다.

  • TCP/IP: 기본적으로 보안이 보장되지 않지만, 암호화를 적용하면 안전한 연결로 만들 수 있습니다.

  • 소켓 파일: 기본적으로 안전합니다. 암호화도 가능하지만, 보안이 더 강화되는 것은 아니며 CPU 부하만 증가시킵니다.

  • 명명된 파이프: 기본적으로 보안이 보장되지 않으며, 암호화 없이도 안전하게 사용할 수 있습니다. 단, named_pipe_full_access_group 시스템 변수를 활용하면 명명된 파이프 연결 사용 권한을 가질 MySQL 사용자를 세밀하게 제어할 수 있습니다.

  • 공유 메모리: 기본적으로 안전합니다.

정리

원격 연결이 필요하다면 TCP/IP를 선택하고 암호화를 적용하는 것이 좋습니다. 로컬 환경에서는 운영체제에 따라 Unix 소켓(기본적으로 안전), 명명된 파이프 또는 공유 메모리를 활용하면 불필요한 암호화 오버헤드 없이 효율적이고 안전한 연결을 유지할 수 있습니다.