본문 바로가기
Java/전자정부프레임워크

[#eGovFrame] 07. MySQL DB 연동 및 한글 인코딩 트러블슈팅

by dopal2 2026. 2. 20.
반응형

HSQL 변경 및 도커 MySQL 설치부터 '한글깨짐' 현상 해결까지

 

작업의 진행상황은 github을 확인해주세요

GitHub : https://github.com/dopal2?tab=repositories

egov : https://github.com/dopal2/egov
egovproject : https://github.com/dopal2/egovproject

기본 템플릿에 내장된 HSQLDB는 가볍지만 실제 서비스 운영에는 한계가 있습니다. 자바 기반의 오픈 소스 RDBMS인 MySQL로 전환하여 실무 역량을 높여보겠습니다.

1. 도커(Docker) 기반 MySQL 설치

먼저 도커 홈페이지에서 Apple Silicon용 설치 파일을 내려받아 설치합니다. 설치 후 컨테이너 기능을 활성화하면 MySQL을 위한 준비가 끝납니다.

🚀 MySQL 컨테이너 실행 및 DB 생성
  • 도커에 MySQL 이미지를 설치하고 실행합니다.
  • MySQL 콘솔에 접속하여 sht 데이터베이스를 생성합니다.
00. 도커설치
01. 도커 설치
02. mysql 설치
03. mysql 설정 및 로그인

 


2. DDL 및 DML SQL 실행

프로젝트 내 DATABASE 폴더에 포함된 MySQL용 스크립트 파일들을 실행합니다.

  1. DDL 실행: 테이블 구조 생성을 위해 all_sht_ddl_mysql.sql을 실행합니다.
  2. Data 실행: 초기 데이터 입력을 위해 all_sht_data_mysql.sql을 실행합니다.
04. database 생성 및 프로젝트 내부에 있던 sht 관련 sql 업로드
05. ddl 관련 sql 실행 및 생성정보 확인

 

06. data 관련 sql 실행 및 데이터 입력 확인

3. eGovFrame 프로젝트 연동 설정

  • globals.properties: 기존 HSQL 주석 처리 후, MySQL 설정의 주석을 해제하고 접속 정보를 입력합니다.
  • pom.xml: MySQL 드라이버 의존성을 추가하거나 버전을 확인한 뒤 Maven Update를 수행합니다.
🚨 보안 오류 해결 (Public Key Retrieval)
접속 시 Public Key Retrieval is not allowed 오류가 발생한다면, JDBC URL 뒤에 아래 옵션을 추가하세요. allowPublicKeyRetrieval=true&useSSL=false
07. globals.properties 수정

 

08. pom.xml 수정

 

09. maven update 수행 및 파일생성 확인

 

10. globals.properties가 dataSource에 어떻게 적용되는지 확인

 

11. 오류발생
12. Public Key Retrieval is not allowed로 인한 오류발생 > Globals.Url=jdbc:log4jdbc:mysql://127.0.0.1:3306/sht?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC 로 변경

4. 한글깨짐 현상 및  해결

web.xml의 인코딩 필터나 server.xml을 수정해도 한글이 깨진다면, 원인은 **DB 테이블 자체의 CHARSET** 문제일 확률이 높습니다.

💡 제미나이(Gemini) 분석 결과

프로젝트에 포함된 DDL 스크립트에 DEFAULT CHARSET=utf8 설정이 누락되어 테이블이 latin1으로 생성된 것이 화근이었습니다.

✅ 해결 방법: 테이블의 Charset을 utf8mb4로 변경한 후 데이터를 다시 로드합니다.
13. 한글깨짐현상

 

14. server.xml 수정 > URIEncoding설정

 

15. web.xml 수정 > 인코딩 설정 변경

 

16. 한글깨짐을 방지하기 위해 인코딩 설정 추가하여 다시 진행
17. 적용이후 기존에 발생하던 문제 해결

마무리하며

우여곡절 끝에 MySQL 연동과 한글 처리까지 마쳤습니다. 이제 데이터가 정상적으로 출력되는 것을 확인했으니, 다음은 게시판 관리자 기능을 통한 커스텀 기능 제작으로 넘어가 보겠습니다!

반응형

댓글