본문 바로가기
데이터노트/MariaDB

마리아디비를 로컬피씨에서 원격접속으로 사용하려는 경우 (체크리스트)

by 테크한스 2021. 12. 1.

마리아디비를 설치한 후에

root 계정이든 추가개발계정으로든 로컬서버에서 터미널 접속 말고

 

원격에서 자신의 디비관리툴 (DBeaver 등등)에서 접속해서 사용하려고 하거나

접속설정을 했든데 원격접속이 안되는 경우 모두 아래와 3가지 팩트를 확인해 보면

그중에 하나의 설정을 확인을 해봐야 합니다.

 

(1) 호스팅하는 서버의 방화벽을 확인해 봐라

 

어떤 클라우드 이든 호스팅 서버이든 네트워크 관리 부분에서 

방화벽기능을 하는 프로그램을 확인해 보아야 합니다.

특히 마리아디비는 3306 포트를 사용하는 것을 아실 것입니다.

제가 사용하는 오라클 클라우드 같은 경우는

가상 클라우드 네트워크 (VCN) 의 Security List 에서 3306 포트를 인바운드로 OPEN해 주었습니다.

 

 

(2) 마리아디비의 계정을 원격으로 생성하라

 

원격디비 계정은 root로 할 수도 있으나 왠만하면 별도의 원격 디비계정을 만드는 것이 안전합니다.

우선 마리아디비에 터미널로 접속해 보겠습니다.

mysql -u디비루트계정 -p디비루트계정

그곳 sql 터미널에서 원격관리자(?)의 계정을 만들어 줍니다. (원격접속용도)

create user '원격계정아이디'@'%' identified by '원격계정패스워드';

권한도 설정합니다.

grant all privileges on 원격접속할디비이름.* to 원격접속아이디@'%';

플러쉬해줍니다.

flush privileges;

 

(3) 마리아디비의 바인드설정 50-server.cnf 파일을 확인해라

 

마지막으로 확인해 줄 것이 바로 my.conf 입니다.

마리아디비를 리눅스(ubuntu)에 설치하는 경우 경로가 

/etc/mysql/mariadb.conf.d/50-server.cnf

에서 확인해 보면 50-server.cnf 을 열어보면 기본 값이 아래와 같습니다.

bind-address            = 127.0.0.1

여기서 앞에 주석으로 막던지, 127.0.0.1 을 0,0,0,0으로 변경하던지, 접속할 원격지 아이피를 적어 주시면 됩니다.

 

 

이제 로컬 피씨에 설치되어 있는 디비관리툴 (DBeaver) 에서 아이피로 해당 마리아디비에 접속하여

편하게 디비관리를 할 수 있습니다.

 

(4) iptables 관련 수행

 

 

서버에서의 에러가 커넥션 거절인 경우 위의 경우로 해결이 되지만

만약 에러가 connection timeout 이라면 

 

iptables 관련 일지도 모른다

 

sudo iptables -F

 

이것으로 connection timeout은 해결되어

로컬피씨에서 또 다른 테스트 마리아디비2에 접속이 성공됩니다.

 

사실 여기까지 해서 되는 경우도 있으나 안되는 경우도 생기더구요

위에 connection timeout 이 아닌 이번에는 connection refused 제대로 걸렸습니다.

 

(5) /etc/mysql/my.conf 설정 수정

 

해당 마리아디비의 설정에서 3306포트를 열어줍니다. (주석 풀다)

[client-server]
# Port or socket location where to connect
port = 3306
socket = /run/mysqld/mysqld.sock

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

다른 서버인 경우 여기서 3306안풀어도 접속이 되는 서버도 있는데 말이죠 흠~

 

일단 저장 후에 mariadb 재기동

 sudo systemctl restart mysql

netstat 로 확인해보아야 합니다.

 

3306 이 제대로 떠 있는지 말이죠

 

여기까지 했는데도 안보이는 분들은 지금까지 클라우드방화벽 열어주었고, 마리아디비방화벽 열어주었는데 안되었으니 운영체제OS 방화벽을 확인해 봐야 할거 같네요.

 

(6) 운영체제 인바운드 규칙 추가

 

만약 netstat 에서 3306이 보이지 않아야 아래 방화벽설정이 의미가 있어 보입니다.

 

sudo iptables -I INPUT 5 -i ens3 -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT

 

설정후에 아래에서 인바운드 규칙이 추가됨을 확인할 수 있습니다.

 

sudo iptables -L

 

여기까지 했다면 이제는 로컬 피씨에서 디비관리툴로 반드시 붙어야 합니다.

 

 

 

댓글