반응형
Spring(스프링)에서 우분투 mariadb를 연동 할때, java.sql.SQLNonTransientConnectionException: 오류를 접하고, 한참 찾다가 정리한걸 공유해봅니다.
오류
java.sql.SQLNonTransientConnectionException:
Could not connect to address=(host=xxx.xxx.xxx.xxx)
(port=3306)(type=master) :
Socket fail to connect to host:xxx.xxx.xxx.xxx, port:3306. Connection refused: connect
java.sql.SQLNonTransientConnectionException: Socket fail to connect to host
원인
원인은 크게 2가지가 있습니다.
1. DB서비스가 정상적으로 기동되지 않은 경우입니다. 이럴경우 포트충돌등의 문제가 없는지 오류 메시지를 잘 확인해 보셔야 합니다.
2. 정상적으로 기동은 되어 있으나 계정에 대한 접근 권한이 제대로 설정되지 않은 경우 입니다.
-> 해당 경우는 사용계정에 대한 localhost와 remote에 대해 구분하여 접근 권한을 설정해 준 후 sql developer등의 DB Client툴에서 접속여부를 확인하여야 합니다.
접근권한 설정하기 (이미 되어있으신 분들은 다음 챕터를 읽으시길 바랍니다.)
create database usfk default character set utf8;
grant all privileges on usfk.* to abc@'%' identified by 'usfk123';
grant all privileges on usfk.* to abc@'localhost' identified by 'usfk123';
위처럼 실행한 후 권한이 잘 설정되었는지 확인해 줍니다.
<-- 권한확인 -->
show grants for usfk@localhost;
show grants for usfk@'%';
권한 설정 해도 안될 때.
권한 설정 까지 줬는데도 불구하고, spring에서 java.sql.SQLNonTransientConnectionException: 해당 오류가 나온다면, MariaDB의 외부 IP로의 접속을 위한 설정을 잡아줘야 합니다.
netstat -ntlp | grep 3306
(netstat명령어를 통해 호스트에 장착된 네트워크 인터페이스(연결상태, 프로토콜 등) 상태를 확인합니다.)
위처럼 127.0.0.1로 나오면 localhost에서는 접속이 되지만 원격 IP에서는 접속이 안됩니다.
<!-- 1. 이동 -->
/etc/mysql/mariadb.conf.d/
<!-- 2. vi편집기 실행 -->
sudo vi 50-server.cnf
<!-- 3. 수정 -->
bind-address = 127.0.0.1 를 주석처리하고
bind-address = 0.0.0.0 을 추가하고 저장한다.
마지막으로 변경사항을 저장하기 위해 MariaDB를 재시작 합니다.
service mysql restart
반응형
'DB > MariaDB' 카테고리의 다른 글
[MariaDB] MariaDB 비밀번호 입력 오류 및 조치 방안 (우분투) (1073) | 2021.03.16 |
---|---|
[MariaDB] 우분투 MariaDB 재 설치 하는 법, 재 설치 시 자주 나오는 오류, 마리아디비 삭제 (2142) | 2021.03.16 |
댓글