티스토리 뷰

반응형

WAS는 윈도우에서 개발하고 MySQL 데이터베이스는 리눅스(우분투)에 띄워서 개발하는 중에 MySQL에 접속되지 않는 현상이 있었다.

일단 리눅스 피씨의 MySQL에 새로운 사용자를 모든 IP에 대해 허용하도록 권한을 설정해서 생성했다.

CREATE USER 'baetest'@'%' IDENTIFIED by 'password';

그리고 웹 어플리케이션 에서 jdbc url을 localhost에서 접속했던 방법에서 url의 localhost만 리눅스 피씨의 IP로 변경해서 설정했다.

jdbc.url=jdbc:mysql://[리눅스피씨 IP]:3306/workbook_db

 

그러나 실행해본 결과 아래와 같은 Exception 이 발생했다.

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

Communications link failure 와 같은 메세지를 보니 MySQL에 통신 오류가 된 것으로 보였다.

확인해본 결과 MySQL 설치 후 default로 localhost만 접속 가능하게 설정되어 있었다.

 

Ubuntu에서 mysqld 연결 수신대기 상태 확인

$ sudo netstat -ntlp | grep mysqld
tcp    0    0    127.0.0.1:3306    0.0.0.0: *    LISTEN    8864/mysqld

이는 mysql server의 listen ip 대역이 localhost(127.0.0.1:3306)만 수신 가능하도록 제한되어 있는 상태이다.

 

my.cnf 파일 수정

$ vi /etc/mysql/my.cnf

// MySQL 버전이 변경되면서 path가 변경된 것 같다. 위에 혹은 아래 경로의 cnf 파일 수정

$ vi /etc/mysql/mysql.conf.d/.. <- 재확인 필요

모든 IP에 대해서 수신 가능하도록 변경 하기 위해서는 my.cnf의 bind-address=127.0.0.1을 주석 처리하고 bind-address=0.0.0.0으로 변경해야 한다. bind-address 를 0.0.0.0 으로 변경 하는 것은 외부에서의 접근을 허용한다는 의미이다.

#bind-address=127.0.0.1
bind-address=0.0.0.0
#주석처리만 해도 bind-address=0.0.0.0 과 같은 의미가 된다.

 

MySQL 재시작

설정 변경 후 적용되도록 재시작이 필요하다.

$ service mysql restart
...
$ sudo netstat -ntlp | grep mysqld
tcp    0    0    0.0.0.0:3306    0.0.0.0: *    LISTEN    8864/mysqld

 

 

특정 IP 대역 설정하는 방법

MySQL의 bind-address 를 특정 IP 로 설정하고 재시작 하는 경우 실행이 되지 않았다. 따라서 현재까지 확인한 방법으로는 Listen IP 는 0.0.0.0 으로 열어두고 사용자의 IP를 설정해서 접근을 제한 하는 방법을 사용하면 특정 IP 대역 설정이 가능하다.

 

특정 혹은 외부 IP 에 대해서 접속 허용을 제한하는 것은 사용자를 추가할 때만 많이 봤던 내용인데, MySQL에서 접속 가능한 IP 대역을 설정해주고 있는지는 처음 알게 되었다.

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함