DB 연결은 SSH 탭에 포트포워딩 하는 호스트와 포트 등 적어주고 DB 연결 하면 뚝딱 해결했지만
난 업무적으로 자바코드로 DB 연결후 엑셀 파일로 출력 해야하는 문제가 있었다.
Maria DB를 사용 하였다.
SSH 터널링 -> 포트포워딩 -> 포트포워딩된 포트를 넣어줘서 DB 연결
public class DBcon_73 {
String driver = "org.mariadb.jdbc.Driver";
Connection conn = null; // DB 접속 객체선언
PreparedStatement pstmt = null; // sql 실행할 객체 선언
ResultSet rs = null; // sql 실행결과를 담을 객체 선언
private Session session;
public static void main(String[] args) {
DBcon_73 dbcon73 = new DBcon_73();
}
public DBcon_73() {
String SSHhost = ""; //SSH 호스트
String DBhost = ""; //DB 호스트
String localhost ="127.0.0.1"; //local
int port = 3306; //기본 포트
try {
JSch jsch = new JSch();
//ssh 로 우선 접속후 port 포워딩을 통해서 mariaDB에 붙인다
session = jsch.getSession("SSH아이디", SSHhost, 22); //SSH 의 기본 포트는 22
session.setPassword("SSH비번");
System.out.println("SSH Connection...");
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
int forward_port = session.setPortForwardingL(0, localhost, 3306); //127.0.0.1/ 0으로 접근한 포트를 연결HOST/3306으로 포트포워딩
System.out.println("localhost: "+forward_port+" -> "+localhost+":"+port);
Class.forName(driver);
conn = DriverManager.getConnection("jdbc:mariadb://"+localhost+":"+forward_port+"/데이터베이스이름", "디비유저", "디비비번");
if (conn != null) {
System.out.println("DB 접속 성공 " + conn);
}
} catch (JSchException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
System.out.println("드라이버 로드 실패");
} catch (SQLException e) {
System.out.println("DB 접속 실패");
e.printStackTrace();
}
}
public void closeSSH() {
session.disconnect();
}
}
코드속 주석 처리로 설명이 되어있다.
난 한창 해멨으나, 쉽게 연결 가능 하다.
SSH는 연결후 close를 꼭 해줘야 한다.
728x90
반응형
'Back-end > JAVA & Spring' 카테고리의 다른 글
[메이븐] 메이븐 다운로드 및 설치(maven download) (0) | 2021.09.06 |
---|---|
[JAVA] 자바 버전 변경하기 (Java 8 -> Java 11) (0) | 2021.09.06 |
[Java] POI 정리 (0) | 2021.08.10 |
자바 이클립스에서 MariaDB 연결하기 (1) | 2021.07.13 |
JDBC- MariaDB와 Java연동 (1) | 2021.07.09 |
댓글