내가 필요해서 내가 적는 블로그

JAVA 백엔드 개발자의 기록들

DB

MySQL 접속 원리에 관한 고찰(feat. 프로젝트)

돌프 2021. 9. 29. 17:53
반응형

어우 솔루션에 VIEW 테이블을 가지고 있어서 이놈 저놈 오픈해 달라는 요청이 많다. 

 

어쨋든, 

DB에 접근하는 방법은 다양하다.

 - 접속 Tool 의 활용 (PLSQL, Toad, Orange, dbeaver, HeidiSQL, SQL Developer 등등...) 

 - 커멘더 활용 등 

 

과연 특정 서버에 있는 DB에 접속이 이루어 질 때, 어떻게 접근을 할까?

그 답은 내부서버에서 DB에 접근을 하던지 외부에서 DB에 접근을 하던지 mysql.sock 이라는 파일을 통해 DB로 접근하게 된다. 

(Windows 계열은 my.ini 파일로 관리 / Linux 계열은 my.cnf 설정파일에 mysql.sock 파일 경로를 박제하여 관리) 

 

DB 접속툴을 사용해서 특정 서버에 있는 MySQL 에 접속한다고 가정을 하자. 

그럼 DB 접속툴에 특정 서버의 IP:PORT 정보 / ID,PW 정보 / 를 입력하여 접속을 한다. 

 

오? 접속이 되네? 

그럼 IP:PORT 와 ID, PW 정보를 입력하였는데 특정 서버(OS)에서 어떻게 DB까지 요청이 갔단 말인가! 

바로 mysql.sock 파일이 그 역활을 한다. 

mysql.sock 파일이 MySQL 기동되어 있을 때 소켓생성하여 접속툴(Client) 와 세션을 맺어 접속이 가능하게 되는 원리이다. 

 

그럼 mysql.sock 파일의 경로는? 

/usr/local/etc/my.cnf  MySQL의 설정을 담당하는 my.cnf 파일을 열어보자! 

 

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Default to using old password format for compatibility with mysql 3.x

# clients (those using the mysqlclient10 compatibility package).

old_passwords=1

# Disabling symbolic-links is recommended to prevent assorted security risks;

# to do so, uncomment this line:

# symbolic-links=0

* https://zetawiki.com/wiki/MySQL_%EC%84%A4%EC%A0%95%ED%8C%8C%EC%9D%BC_my.cnf 제타위키 예시 인용

 

my.cnf 파일을 열어 보면 소켓 파일의 위치가 /var/lib/mysql/mysql.sock 에 위치하고 있는 것을 알 수 있다. 

하지만 이것은 내부에서 접근 가능한 설정이며, 특정 Linux 계열의 서버에 위와 같은 설정으로 설치 하였다면, 

외부에서 접근하는 접속은 차단될 수 있다. 

 

따라서, Linux 계열에서는 mysql.sock 파일의 위치를 /tmp/mysql.sock 으로 옮기고 심볼릭링크를 걸어 주도록 하자.

* mysql.sock 위치 찾기

find / -name mysql.sock

 

sudo ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

 

ls -al 

mysql.sock -> /tmp/mysql.sock

 

어쨋거나 저깻거나 /tmp/mysql.sock 으로 TCP/IP로 들어오는 외부 요청에 대한 세션을 담당할 수 있게 되려면 

/tmp/mysql.sock 파일을 인식하여야 한다. 그래야 특정 서버의 DB로 접근이 가능하다. 

 

* 나도 아직 명확하게 이해는 안됐다, 아시는분 댓글좀... 

어쨋든 오늘은 끗.

 

 

 

본문 내용이 도움이 되셨다면, 아래의 공감버튼을 눌러주세요. 

정보 공유를 위한 포스팅에 큰 힘이 됩니다. 

만약 틀린 정보가 있으면 댓글 달아주세요. 수정하도록 하겠습니다. 

읽어주셔서 감사합니다. 오늘도 좋은 하루 보내세요. 

 

반응형