전자정부 개발환경 v4.2 공통 콤포넌트 DB 연결하기

2024. 7. 30. 02:28Java/전자정부 프레임워크

DB 접속 설정파일 수정하기

전자정부에서는 DB 접속 정보가 src/main/resources/egovframework/egovProps/globals.properties 에 담겨져 있다.

 
윈도 환경에서 마리아DB 를 쓸 거라서 각각을 다음과 같이 변경한다.

변경 전)
Globals.OsType = UNIX
Globals.DbType = mysql

변경 후)
Globals.OsType = WINDOWS
Globals.DbType = maria

 
Globals.DbType = maria 로 DB타입을 지정했지만 Maria DB 와 MySQL 이 헷갈릴 수 있기 때문에 MySQL 설정부분을 '#' 으로 주석처리하기로 한다.

 
마지막으로 Maria DB 설정을 적절히 변경하고 파일을 저장한다.

변경 전)
Globals.maria.Url=jdbc:mariadb://127.0.0.1:3366/com        <--- 포트가 3366 으로 되어 있다
Globals.maria.Password = xz4fmrSdr1vGGl6UtwPLwA%3D%3D      <--- 테스트로 쓰기엔 너무 길다

변경 후)
Globals.maria.Url=jdbc:mariadb://127.0.0.1:3306/com        <--- Maria DB 도 기본 포트는 3306 이다
Globals.maria.Password = 1234                              <--- 짧게 고침

 
전자정부 프레임워크에서의 테스트 가능한 DB 연결 기본설정은 여기까지다.
 

DB 접속 계정 생성 및 공통컴포넌트용 스키마 설치하기

Maria DB 설치는 https://debianizer.tistory.com/216 를 참고하기 바란다.
 
egovframework-all-in-oneAllNew 프로젝트에서 script 밑에 comment, ddl, dml 용 SQL 이 들어 있다.
ddl, dml, comment 순으로 SQL 을 실행하면 된다.
 
다만, globals.properties 에서 UserName 변수값에 기본 지정된 'com' 계정과 Globals.maria.Url 맨뒤에 붙은 'com' (데이터베이스명)은 script 쿼리에 안들어 있기 때문에 직접 생성하고 권한을 부여해야 한다.

 

계정 생성하기


1) 'com' 계정을 우선 생성해보자
윈도 커맨드 창에서 mariadb 클라이언트 명령으로 Maria DB 에 root 계정으로 접속할 땐 mysql (DB명) 이 보이는데 DBeaver GUI 에서는 안보인다. 따라서 root 로 로그인한 후에 SQL 편집기에서
 

use mysql;

 
을 실행해서 mysql (DB명)을 쓰겠다고 명시해주어야 한다. (특히 밑에서 ddl, dml 을 실행할 때 말이다)

 

Users > Create New User 클릭

 

'com'@'%' 계정을 생성한다. 권한은 Check All 을 눌러서 모두 선택되게 한다. 그리고 Save 를 클릭한다.

 

Persist 클릭

 

'com'@'%' 와 별개로 'com'@'localhost' 도 같은 방법으로 만든다. localhost 에서 %로 커버 할 수 없기에.
Databases > Create New Database 클릭

 

한글사용이 가능하게 utf8mb4 / utf8mb4_general_ci 를 선택한다

 
 스키마 생성하기

script 폴더 아래의 ddl, dml, comment 순서로 각각의 maria 폴더 안에 들어 있는 sql 을 실행한다.

 

여기서 유의할 점은

 

 

스크립트가 5406 행이다

 

SQL 이 5406행 이라 너무 많기 때문에 커맨드 창에서 붙여넣기로 실행하거나 DBeaver 에서 <Ctrl><Enter> 키 조합으로 한줄씩 실행하면 이전 쿼리 실행결과를 받아오는 시각과 그것보다 먼저 실행되는 다음 쿼리 때문에 밀림현상이 일어나서 오류가 발생한다. 따라서 DBeaver 의 경우 스크립트로 실행하면 중간에 오류를 발생시키지 않고 말끔히 처리한다.