본문 바로가기
Back End/JSP

[Mac/M1][MySQL][intellij] JSP프로젝트에 MySQL 연동하기

by SolaKim 2023. 11. 29.

드디어 올것이 왔습니다...

Mysql을 연동해야하네요... 수업자료는 모두 윈도우 컴퓨터를 기준으로 Mysql 연동하는 방법이 나와 있어서.. 저는 또 수업시간동안 멍때리다가 집와서 구글링하면서 연동 해야됐습니다...

이것도 정말 수많은 수행착오를 겪게 되었는데요... 하하... 잊지 않기 위해 블로그로 글 남겨봅니다...!

 

mysql 연동하기 전에 앞선 포스트에서 "jsp 프로젝트를 위한 Dynamic web project 생성 및 환경설정과 톰캣 연동 방법, 라이브러리 및 프레임워크 추가방법" 편을 보고 오셔야됩니다... 그 단계가 다 끝난 이후에 mysql을 연동하는겁니다 여러분~
아래 링크를 타고 들어가서 단계를 다 끝내고 와주세요!!!

https://ffe4el.tistory.com/106

 

[Mac/M1][intelliJ] Dynamic web project 생성 + 톰캣 연동(인텔리제이 사용자 필수로 보셔야합니다~)

23-2학기에 웹 서비스설계 수업을 수강하고 있는데, 아무래도 현재 내가 가지고 있는 컴퓨터가 맥북이다보니까,,, 수업시간에 서 환경설정 부분에서 자주 막힌다... 일단 수업시간엔 이클립스를

ffe4el.tistory.com

 

자, 단계를 다 거치고 오셨나요? 정말 수고하셨습니다. 👏🏻👏🏻👏🏻 이제 더욱 수고해봅시다!

 

일단 맥북에서 mysql을 설치하는 방법은 두가지가 있습니다.

 

1. mysql 다운로드 사이트에서 다운로드 받기

https://dev.mysql.com/downloads/

 

MySQL :: MySQL Community Downloads

The world's most popular open source database Contact MySQL  |  Login  |  Register

dev.mysql.com

위 링크에 들어가서 MySQL Community Server 을 클릭합니다..
이후 select version에서 innovation 바로 전 버전을 클릭해줍니다. 이후 다운로드 할 리스트들이 매우 많을텐데, 그중에서 가장 위에 있는 ARM, 64bit를 다운로드 받아줍니다. (맥 실리콘 M1 기준입니다.)

 


2. homebrew 이용해서 설치하기

 

- mysql 설치하기

$ brew install mysql

- mysql 시작하기

$ mysql.server start

- mysql 시작 후 기본 설정

$ mysql_secure_installation

순서대로 아래 질문들이 나오면 y 또는 n을 입력하여 설정해 줍니다.

비밀번호 복잡도 검사 과정 (n)
비밀번호 입력 & 확인
익명 사용자 삭제 (y)
원격 접속 허용하지 않을 것인가? (y)
test DB 삭제 (n)
previlege 테이블을 다시 로드할 것인지 (y)
설정을 마치면 All done! 메세지가 출력됩니다.

- mysql 사용

$ mysql -u root -p

- mysql 삭제

$ brew uninstall --force mysql

- mysql root 비밀번호 설정하기

$ mysql_secure_installation

 

 

💥오류1

가끔 재설치할때 다음과 같은 에러가 나곤 하는데, 아래 링크를 참고하자...!

error: no such file or directory - /usr/local/var/homebrew/linked/mysql

https://penguin-kim.tistory.com/41

 

[MySQL 에러 모음집] #1. Error: No such file or directory - /usr/local/var/homebrew/linked/mysql

MySQL이 조금 이상해져서 시원하게 밀어버리고 brew를 통해 다시 설치하던 와중, 에러가 발생했다...! 더 큰 문제는 해당 위치에 mysql님이 잘 계신다는 점..? 그래서 그냥 시원하게 저 mysql도 밀어버

penguin-kim.tistory.com

 

💥 오류2

msql 서버 실행 시 The server quit without updating PID file 해당 에러가 발생할 경우​

1번 방법

터미널을 열고 mysql이 사용하고 있는 PID를 확인한다.

lsof -i

mysql이 사용하는 PID 확인 후 터미널에 아래의 명령어를 입력한다

kill -9 PID번호

그 후 mysql의 소유자를 확인한다

ls -laF /usr/local/mysql

소유자가 root일 경우, 아래의 명령어를 입력하여 소유자를 변경한다

sudo chown -R mysql /usr/local/mysql

출처 : https://blog.naver.com/playhoos/221505255355

 


결론적으로 우리는 Connector/J 연동시켜야 하는데!! (여기서부터 진행) 

 

<1 . Connector/J 연동시키기>

 

1. SQL Connector 다운받기

https://dev.mysql.com/downloads/connector/j/

 

MySQL :: Download Connector/J

MySQL Connector/J is the official JDBC driver for MySQL. MySQL Connector/J 8.0 and higher is compatible with all MySQL versions starting with MySQL 5.7. Additionally, MySQL Connector/J 8.0 and higher supports the new X DevAPI for development with MySQL Ser

dev.mysql.com

위 링크로 들어가서, 아래 그림과 같이 Platform Independent로 선택하고 둘중 아무거나로 다운로드 받는다

 

2. 설치가 끝나면 ZIP 파일을 압축해제한다. 그러면 아래와 같은 폴더가 나타날텐데, mysql-connector-java-8.2.0.jar 파일을 복사한다.

 

3. 다음과 같은 경로에 복사한 jar 파일을 붙여넣는다. 

 

4. 이클립스 상단에 파일->프로젝트구조->라이브버리로 들어가서 + 버튼을 눌러 Java 탭을 클릭한다. 그리고 위의 경로에 있는 jar 파일을 선택하여 추가한다.

그럼 다음과 같이 connector-j 가 잘 들어와있는것을 확인할 수 있다.

 

이제 mysql과 연동이 완료되었는데, 주의해야할점이 있다. 시작전에 반드시 mysql 서버를 실행해야하고, 접근할 DB의 테이블에 속성값을 저장해두어야한다는 점이다. 이게 뭔말이냐면, 일단 다음부분에 작성할 예정이니 계속 봐봐라....!!

 


 

<2 . MySql 연동하기(인텔리제이 상에서)>

 

1. 인텔리제이 맨 오른쪽 데이터베이스 메뉴를 클릭한다.

 

2. "+" 버튼을 누르고 "데이터 소스" 클릭 후 mysql을 찾아서 클릭한다.

 

3. 그러면 다음과 같은 화면이 나타나는데, 이름을 정해주고, 사용자 이름, 비밀번호, 데이터베이스를 입력하면 아래쪽에 다운로드 버튼이 나타날겁니다. 그럼 다운로드를 진행해주고 연결테스트를 해봅니다. 연결테스트가 정상 작동하면 성공한겁니다...!!!

 

4. 자 이제 서버에서 자동으로 데이터베이스를 연동해주는 코드를 짜봅시다. (인터넷으로 검색해보니, Java Spring의 경우 자바파일에 어노테이션을 붙여서 작성하던데, 저희 수업 프로젝트에서는 연동코드도 jsp로 작성했기 때문에,, 저도 jsp 코드로 작성해보았습니다.)

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import = "java.sql.*" %>

<%
	Connection conn = null;

	try {
		String url = "jdbc:mysql://localhost:3306/JDBC";
		String user = "root";
		String passwd = "123456";

		Class.forName("com.mysql.jdbc.Driver");
		conn = DriverManager.getConnection(url, user, passwd);
		System.out.println("제대로 연결되었습니다.");
	}catch (Exception e) {
		e.printStackTrace();
	}
%>

ㄴ 이 코드는 dbConn.jsp 이라고 db를 연동하는 코드

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>
<%@ page import="java.sql.*" %>
<%@ include file="dbConn.jsp" %>

<%
    String u_id = request.getParameter("userID");
    String u_pw = request.getParameter("userPW");
    String u_mail = request.getParameter("userMAIL");

    String sql = "INSERT INTO members (id, passwd, email) VALUES";
    sql += "('" + u_id +"','"+u_pw +"','"+u_mail + "')";

    Statement sm = conn.createStatement();

    int count = sm.executeUpdate(sql);
    if (count == 1) {
        response.sendRedirect("signupSuccess.jsp");
    }else{
        out.println("회원가입 실패!");
        response.sendRedirect("signup.jsp");
    }
    sm.close();
    conn.close();
%>

ㄴ 이 코드는 데이터베이스에 입력값을 저장하는 코드

<%@ include file="dbConn.jsp" %> 를 통해서 dbConn에 있는 내용을 그대로 사용할 수 있다. 

 

5. 여기서 아마 members라는 테이블네임에 빨간색 에러표시가 날텐데, 이때 인텔리제이의 경우 members에 마우스 커서를 올려두고 option+enter을 누른다. 그리고 테이블속성에 추가하기 옵션을 선택한다.

그럼 위와 같은 창이 뜨게되고, 여기서 +와 -를 통해 memebers에 있는 속성들을 추가하거나 제거할 수 있다. 

저곳에서 테이블의 속성을 수정하고 실행버튼을 누르면 이제 members에 있는 빨간글자가 제대로 돌아온것을 확인할 수 있을것이다.

그리고 인텔리제이 맨 오른쪽 데이터베이스 메뉴를 누르면 아래 그림처럼 제대로 테이블이 저장되어 있는것 또한 확인할 수 있다.

 

이렇게 하면 이제 톰캣서버를 실행하면 제대로 db가 연동되어 서비스가 진행되는 모습을 볼 수 있을 것이다!!!

지금 이렇게 쭉 써놓은 방법들이, 구글에 쳐봤을때는 여기저기 정보들이 흩뿌려져 있어서ㅠㅠ 다음번에 할때 기억이 안날까봐 참고삼아 쓴 블로그 글이다. 

 

맥북은 정말 환경설정하기가 윈도우보다 몇배 더 어려운것 같다. 자료도 거의 없고ㅠㅠ

 

그럼 모두 수고하셨습니다~~! 👏🏻👏🏻