평범한 이야기들

[Ubuntu] Ubuntu20.04 에서 Mysql 외부접속 허용하기 본문

평범한 개발 이야기/OS

[Ubuntu] Ubuntu20.04 에서 Mysql 외부접속 허용하기

songsariya 2021. 1. 12. 20:43
728x90

 Mysql은 로컬이 아닌 외부에서 접속을 시도하면 오류가 나옵니다. 그 이유는 Mysql은 설치 시 기본적으로 로컬에서만 접속 가능하게 설정이 되어있기 때문입니다. 그렇기 때문에 외부에서 접속을 하기 위해서는 몇 가지 설정을 더 해주어야 합니다.

 

접속이 되지 않은 Mysql Workbench

 

cnf 파일 수정

 먼저 mysql의 설정이 되어있는 cnf 파일을 수정해야 합니다.

# 설치시 별 다른 옵션을 주지 않았다면 아래와 같은 곳에 cnf 파일이 존재한다.

$ sudo vim /etc/mysql/my.cnf
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

 해당 파일을 열면 중간에 bind-address = 127.0.0.1 부분이 존재합니다.

 

bind-address = 127.0.0.1 로 설정되어있는 cnf 파일

해당 부분을 주석 처리해주시면 됩니다. 이 내용은 로컬 호스트(localhost, 127.0.0.1)에서 들어오는 접속을 바인딩한다는 뜻으로 해당 설정 때문에 외부에서 접근을 하지 못하는 것입니다. 저는 bind-address, mysqlx-bind-address 부분을 주석 처리했습니다. 주석처리는 '#'을 이용하시면 됩니다. 

 그리고 Mysql을 재시작해주시면 됩니다.

 

$ sudo service mysql restart

 

iptables rule 추가

 우분투 내부의 방화벽에 포트를 열어주어야 합니다.

$ sudo vim /etc/iptables/rules.v4

해당 파일을 열게 되면 아래 화면과 같습니다.

iptables 의 rules.v4 파일 내용

해당 파일에 적당한 위치에 mysql 기본 포트인 3306 포트를 열어주면 됩니다.

 

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

위와 같이 내용을 추가해주신 다음 저장 후 iptables를 재시작해주시면 됩니다.

 

$ sudo service iptables restart

 

모든 설정이 다 끝났습니다. 다시 Mysql Workbench로 접속을 하게 되면 정상적으로 접속이 되는 것을 확인하실 수 있습니다.

 

정상적으로 외부에서 접근된 Mysql Workbench 화면

 

혹시 우분투에서 ufw를 사용하신다면 ufw를 이용해 3306 포트를 열어주시면 됩니다. 

728x90
Comments