mysql.sock

HYEYOON·2021년 7월 2일
0

mysql.sock ?

Unix Domain Socket이라는 것이다.
이것은 TCP/IP와 같은 식으로 다룰 수 있는 통신소켓이다.
단, Unix Domain Socket은 다른 컴퓨터에 있는 프로세스와는 통신할 수 없고, 같은 컴퓨터에 있는 프로세스끼리만 통신 가능하다.

왜 필요한지?

Mysql서버프로그램 (mysqld)과 클라이언트 프로그램(mysql)은 서로 다른 프로세스이다.
이 둘 사이에 통신이 이루어져야 일이 진행되는데 이때 통신의 용도로 Unix Domain Socket을 사용한다.

mysql은 TCP/IP소켓과 Unix Domain Socket 둘다 사용가능하다.
전자는 mysql 서버와 클라이언트가 다른 컴퓨터에 사용한다. 이때 포트는 3306!!
후자는 서버와 클라이언트가 같은 컴픁터에 있을 때 사용한다.
같은 컴퓨터에 있을 때에도 TCP/IP를 쓸수 있지만 Unix 가 더 빠르다.

통신방법?

TCP/IP소켓은 IP주소와 포트를 이용해서 접속하지만 Unix Domain Socket은 파일을 이용한다.
mysqld를 실행시켰을때는 mysql.sock파일이 존재하지만, 중지시키면 저 파일은 사라진다.
mysql.sock 파일은 서버와 클라이언트 모두 접근 가능해야한다. 따라서 mysql.sock파일이 생성되는 위치에 서버가 파일을 쓰거나 읽을 수 없으면 서버는 에러를 발생시키고 중지되며, 클라이언트가 그 파일에 접근할 수 없으면 접속이 이루어지지않는다.
,,참고로,, docker-compose할때 그래서 계속 에러 났다 .. 접근권한 에러..

파일위치?

보통 /var/lib/mysql/mysql.sock이다.
ㅎㅎ ㅎㅎ

profile
Back-End Developer🌱

0개의 댓글