상세 컨텐츠

본문 제목

[MySQL] 외부 접속 체크 사항

ETC

by jeonghojin 2022. 12. 26. 17:00

본문

개인 프로젝트 진행 중, DB 서버를 다른 서버로 바꿔야 하는 일이 생겨, 새로 구축된 DB 서버와 연동을 하였지만 정상적으로 되지 않아 테스트를 진행하였다.

현재 DB tool(DataGrip)에서는 정상 접속 가능한 상태이나, Springboot 프로젝트에서는 접근이 되지 않는 것 같다.

DataGrip에서는 터널링을 통해 접근하고 있다.


우선,

 

DB 서버의 유저 접속 관련 정보 확인

 

mysql > use mysql;
mysql > show tables;

show tables 명령 실행 후, 출력되는 테이블 목록 중  user 테이블에 접근하여 호스트 정보를 확인해야한다.

 

 

 

 

 

 

※ 만약 host 정보가 localhost 로 되어있다면 이것은 해당 user가 localhost에서만 접속할 수 있다는 뜻이다.

'%'로 변경해주어야 한다.

mysql > grant all privileges on *.* to '{유저}'$'%' identified by '{유저의 패스워드}';

 

※ *.* 는 모든 db 접근, '%' 모든 ip 에 대해 허용

 

위 명령을 적용

mysql > flush privileges;

확인

mysql > SELECT host, user FROM user;

MySQL 접속정보 확인

 

mysql 외부 접속시도시 실패할 경우, mysqld.cnf 파일 확인

$ vi /etc/mysql/mysql.cnf.d/mysqld.cnf

bind-address, mysqlx-bind-address 정보가 127.0.0.1 로 되어있다면 0.0.0.0으로 변경하여 외부에서 접속할 수 있도록 설정한다.

 

설정 저장후, mysql을 재시작한다.

$ netstat -tnlp

**기존 127.0.0.1:3306 -> 0.0.0.0:{포트}


방화벽 확인

참고

 

방화벽 확인

$ sudo ufw status verbose

포트 허용

$ sudo ufw allow {포트}/tcp

 

확인

$ sudo ufw status verbose


클라우드 INBOUND 설정

* 오라클 클라우드 사용

 

컴퓨트 > 인스턴스 > 인스턴스 세부정보

 

다음과 같이 수신 규칙을 추가해준다.

 

 


참고

관련글 더보기