[Raspberry Pi] 외부 IP에서 MariaDB 접근

SeungHyeon·2022년 7월 28일
0
post-thumbnail

프로젝트를 진행 중 라즈베리 파이 MariaDB에 접근하기 위해 아래와 같은 테스트 코드를 작성하였다.

package com.example.demo;

import org.junit.jupiter.api.Test;

import java.sql.Connection;
import java.sql.DriverManager;

public class MariadbConnectionTest {

    // MySQL Connector 의 클래스. DB 연결 드라이버 정의
    private static final String DRIVER = "org.mariadb.jdbc.Driver";
    
    // DB 경로
    private static final String URL = "jdbc:mariadb://192.168.219.102/oasis";
    private static final String USER = "root";
    private static final String PASSWORD = "12345";

    @Test
    public void testConnection() throws Exception {
        // DBMS에게 DB 연결 드라이버의 위치를 알려주기 위한 메소드
        Class.forName(DRIVER);
        try {
            Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
            System.out.println(connection);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

테스트하는 과정에서 아래와 같은 오류가 발생했고

java.sql.SQLNonTransientConnectionException: Socket fail to connect to host:address=(host=192.168.219.102)(port=3306)(type=primary). Connection refused

본 포스팅에서는 이 오류를 어떻게 해결했는지에 대해 작성해보겠다.


이 오류를 해결하기 위해 외부에서 접근할 수 있게 하려고 3가지 작업을 거쳤는데,

첫 번째는 DB 서버가 어떤 주소로의 요청을 허용할 것인지 설정해주었다.

정확히는 127.0.0.1 정보를 통해 생성된 소켓 파일을 통해서 온 요청만 허용하는 것을 주석 처리하여 모든 IP에 대해 허용해주었다.

$ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

명령어를 입력한 후 bind-address를 찾아 주석처리 해주면 된다.

주석 처리 방법

1) i를 눌러 수정모드로 들어가고
2) #을 눌러 bind-address를 주석처리를 진행한 후
3) :wq 명령어를 이용해 나오면 된다.

다음으론 root가 외부 IP로 접속할 수 있는 권한을 MariaDB에 설정했다.

MariaDB [(none)]> grant all privileges on *.* to 'root'@'%' identified by '비밀번호';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

마지막으로 MYSQL을 재시작해주었다.

$ sudo service mysql restart

위와 같이 작업하고 테스트를 돌려보자. 연결이 잘 된 것을 확인할 수 있다.

참고) https://velog.io/@dogakday/%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC%ED%8C%8C%EC%9D%B4-Maria-DB-%EC%84%A4%EC%B9%98

profile
어제보다 더 나은 오늘이 되자

0개의 댓글