본문 바로가기

Java

[JDBC] 자바로 mysql 8 버전 연결하기

이번 주제에서 알아볼 것은 Java로 DB 연결하는 방법을 알아보겠습니다.


 

우선 알아야 할 내용이 있습니다.

 Connection (java.sql.Connection)은 DB에 접속할 때 필요한 클래스입니다.

(본 내용은  mysql 8.0.16 버전을 설치했고,  Build Path  설정한 상태에서 작성된 내용입니다.)

 

package jdbc;

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

public class DBConnection {

	private Connection con;

	public DBConnection() {
		try {
			String url = "jdbc:mysql://localhost/?characterEncoding=UTF-8&serverTimezone=UTC";
			String user = "user";
			String passwd = "1234";
			con = DriverManager.getConnection(url,
					user, passwd);
			
			con.close();
			System.out.println("DB연결 성공");
		} catch (SQLException e) {
			System.out.println("DB연결 실패");
			System.out.print("사유 : " + e.getMessage());
		}
	}

	public static void main(String[] args) {
		new DBConnection();
	}

}

 

DriverManaget.getConnection 메소드를 사용할 때는 url과, user, password가 필요합니다.

 

url은 DB에 연결할 때 찾는 주소를 적는 곳 입니다.

 - 기본적으로 "jdbc:mysql://localhost/?characterEncoding=UTF-8&serverTimezone=UTC"를 입력해주시면 됩니다.

user는 접속할 아이디라고 생각하시면 됩니다.

 - 기본적으로는 root라는 아이디가 있습니다.

password는 접속할 아이디에 비밀번호를 입력하는 곳 입니다.

 - 아이디에 따라 비밀번호를 입력하면 됩니다.

 - mysql을 설치할 때 비밀번호를 설정하게 되는데 그게 root의 비밀번호입니다.


이렇게 url, user, password를 입력하고,

위 코드가 정상적으로 작동한다면 밑에 이미지처럼 출력이 됩니다.

제대로 연결되었을 경우 "DB연결 성공"을 출력 (위 "JRE Oracle"은 무시하셔도 됩니다)

DB를 설정하지 않은 상태에서 위 코드를 실행하면 오류를 출력합니다.

 

이유는 여러 가지가 있지만

첫째 mysql 8.X 버전으로 높아지면서 "Public Key Retrieval is not allowed" 으로뜨는 오류가 있습니다.

해결 방법은 기존 url + "&allowPublicKeyRetrieval=true"를 입력해주시면 위 에러는 사라집니다.

 

또 다른 "Establishing SSL connection without~"에러가 뜰 때가 있습니다.

해결 방법은 기존 url + "&useSSL=false"를 입력하면 더 이상 메시지는 출력이 안되고 사라지게 됩니다.


둘째 "Access denied for user~" 오류는 userpassword가 일치하지 않는 경우 발생하는 오류입니다.

해결 방법은 처음 mysql 설치 시 관리자 계정 정보를 입력하거나, 사용자 계정을 만들어 접속할 수도 있습니다.

 

이 외에도 많은 오류가 발생하지만 대부분은 위 2가지만 알아도  Connection 할 때 나는 오류는 대부분 잡아낼 수 있습니다.

 

다음 글에서는 Java로 sql문 처리하는 방법을 알려드리겠습니다.