에러 해결

문제

JDBC 연동 중에 모든 코드에 이상이 없을 확인하고 실행을 돌렸다.
하지만 보여지는 것은 내가 원하던 결과가 아니라 다음과 같은 에러 메시지였다.

java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=주소)(port=3306)(type=master) : Socket fail to connect to host:주소, port:3306. Connection refused: connect
    at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
    at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:192)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1392)
    at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:635)
    at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150)
    at org.mariadb.jdbc.Driver.connect(Driver.java:89)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at kr.or.connect.jdbcexam.dao.RoleDao.getRole(RoleDao.java:19)
    at kr.or.connect.jdbcexam.JDBCExam1.main(JDBCExam1.java:9)
Caused by: java.sql.SQLNonTransientConnectionException: Socket fail to connect to host:주소, port:3306. Connection refused: connect
    at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
    at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:183)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createSocket(AbstractConnectProtocol.java:255)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:519)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1387)
    ... 7 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
    at java.net.Socket.connect(Socket.java:606)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createSocket(AbstractConnectProtocol.java:250)
    ... 9 more

aws ec2 에서 3306 포트도 열어주고 방화벽도 꺼주고 stack overvlow에서 mysql 서비스 재시작 하라는 것도 다 해보아도 해결이 되지 않았다.
진짜 몇 시간을 여기에만 쏟다가 도저히 안되는거 같아서 친한 형한테 자문을 구했다.
그 형이 데이터 베이스에서 외부 접속을 막는거 아니냐? 라는 질문을 던졌을 때 무슨 말인지 이해를 못했다.
검색을 해보니 mariaDB 초기 설정에서 수정이 가능함을 알게 되었다.
server 파일의 bind-address를 수정하라는 글이었다.


해결방법

구체적으로 말하면 /etc/mysql/mariadb.conf.d/의 경로에 있는 50-server.cnf 파일 내용 bind-address를 127.0.0.1 에서 0.0.0.0으로 수정 하는 것이다.
이를 수정하고 서비스를 재시작 service mysql restart을 해주니 문제가 깔끔하게 해결되었다.
진짜 아깝지 않은? 시간이었다.

'기타' 카테고리의 다른 글

Android 공부할 내용들 (Todo list)  (0) 2022.11.28
Greedy Algorithm  (0) 2021.01.27
Dynamic Programming  (0) 2021.01.27
github.io 블로그 댓글 및 게시글 에러  (0) 2021.01.23
github.io 블로그 만들기(3) - comment 기능 추가하기  (0) 2021.01.15
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기