MySQL 외부접속 허용하기

Zdevowl·2021년 3월 19일
0
post-custom-banner

MySQL을 내 PC에 깔고 사용하는 유저가 아니라면 외부에서 접속이 필요하다. 외부에서 MySQL에 접근하려면 어떻게 해야할까? 우리가 일반적으로 사용하는 접속정보에 그 답이 있다. 접속정보는 대부분 아래와 같은 특성을 가진다.

  • IP주소와 PORT는 필수적이다.
  • 접속하려는 USER와 PASSWORD가 필요하다.
  • 대상 DATABASE 어딘지 알아야 한다.

위와 같은 정보를 제공하기 위해서는 몇 가지 작업이 필요하다.

방화벽 PORT 열기

PC나 서버나 방화벽이 있다. 외부에서 접근하기 위해서는 PORT를 열어주어야 한다. MySQL에서 사용되는 PORT는 다음과 같이 확인이 가능하다.

SHOW VARIABLES LIKE 'PORT';

MySQL을 기본적으로 3306을 사용한다. 내가 설치하지 않은 경우에는 아닐 수 있으니 PORT를 확인하는 방법은 알아두는 것이 좋다.

PORT를 확인했으면 firewall-cmd 명령으로 PORT를 열자.

sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

외부 접속권한 부여

MySQL은 USER를 내부에서 생성하고 권한을 부여할 수 있다. 학습하는 과정이니 root 유저를 사용하는 것도 괜찮으나 유저를 생성하여 권한을 부여해보자.

USER 생성

MySQL에 접속 후 USER를 생성하겠다. 유저를 생성하는 문장은 다음과 같다.

CREATE USER <USER>@'<USER IP>' IDENTIFIED BY '<root 비밀번호>';

USER IP는 USER가 접속할 때, MySQL서버에서 보이는 IP이다. 대부분 공인IP나 내부 네트워크일 경우 ipconfig로 확인 할 수 있다. 확인하는 과정은 꽤 번거로운 과정이 있으므로 아래와 같이 '%'를 활용하여 모든 IP에서 접속이 가능하도록 만들겠다.

CREATE USER <USER>@'%' IDENTIFIED BY '<root 비밀번호>';

그럼, zdevowl로 USER를 만들어보자.

CREATE USER zdevowl@'%' IDENTIFIED BY 'Passw0rd12#';

유저를 만든 다음에는 권한을 부여해야한다. 권한을 부여하는 구문은 다음과 같다.

GRANT <priv_type> ON <priv_level> TO <USER>@'<USER IP>;

권한도 세분화하면 여러가지가 있으나 지금은 priv_type은 ALL, priv_level은 .로 부여하겠다.

GRANT ALL ON *.* TO zdevowl@'%';

권한을 부여한후에는 아래와 같이 FLUSH 해야한다.

FLUSH PRIVILEGES;

마치며...

외부접속을 허용하는 과정이 생각보다 까다로웠으나 그 만큼 보안에 신경을 쓰고있다는 것을 느꼈다. 미래의 나에게 꽤 도움되는 글이라 생각한다.

profile
공부하는 DB엔지니어
post-custom-banner

0개의 댓글