[Keycloak] 외부 DB(Mysql)로 변경 (Quarkus, 17버전 이후)

2022. 6. 29. 11:38·Keycloak
목차
  1. Mysql 5버전 설치
  2. Mysql 8버전 설치
  3. Realm 백업
  4. 외부 DB 설정
반응형

Keycloak 로고

이제껏 DB를 따로 생성하지 않아도 Realm, Client, User를 생성하고 저장할 수 있었던 이유는, Keycloak내의 내부 DB(h2)를 사용하고 있었기 때문입니다.
하지만 보통 운영 단계에서는 외부 DB를 사용하는 경우가 많으므로 Keycloak 내부 DB에서 외부 DB로 변경해보겠습니다.

설치 DB는 Mysql입니다. 저는 Docker Compose로 설치해보겠습니다.

Mysql 5버전 설치


      
# docker-compose.yml
version: "3.8"
services:
mysql_5:
image: mysql:5.7.38
container_name: mysql_5
environment:
- MYSQL_DATABASE=keycloak5
- MYSQL_USER=jerry
- MYSQL_PASSWORD=password
- MYSQL_ROOT_PASSWORD=root_password
ports:
- "3305:3306" # 포트는 3305번으로 생성하겠습니다.
healthcheck:
test: "mysqladmin ping -u root -p$${MYSQL_ROOT_PASSWORD}"

Mysql 8버전 설치


      
# docker-compose.yml
version: "3.8"
services:
mysql_8:
image: mysql:8.0.29
container_name: mysql_8
environment:
- MYSQL_DATABASE=keycloak8
- MYSQL_USER=jerry
- MYSQL_PASSWORD=password
- MYSQL_ROOT_PASSWORD=root_password
ports:
- "3308:3306" # 포트는 3308번으로 생성하겠습니다.
healthcheck:
test: "mysqladmin ping -u root -p$${MYSQL_ROOT_PASSWORD}"

이제 다음 커맨드를 입력하여 실행해 줍니다.


      
$ docker-compose up -d

 

Realm 백업

여태 작업 한 내용들이 아까우니, 백업을 해줍시다. 

Keycloak Realm 백업

Export 메뉴로 들어가 Export를 하면  SampleRealm의 백업파일인 realm-export.json 파일이 다운로드 됩니다. 

 

외부 DB 설정

17버전을 기준으로 변경되었습니다. 복잡했던 16버전에 비해, 17 이후 버전은 설정이 간편해졌습니다. 
keycloak이 설치된 폴더안에 conf 폴더 내 keycloak.conf 파일을 수정하겠습니다.
다음 커맨드로 keycloak.conf파일에 접근합니다.


      
$ vi ./conf/keycloak.conf

keycloak.conf 파일을 아래와 같이 설정했습니다.


      
# Basic settings for running in production. Change accordingly before deploying the server.
# Port
# 기존 8080이었던 keycloak 포트를 9090으로 변경
http-port=9090
# Database
# The database vendor.
db=mysql
# The username of the database user.
db-username=jerry
# The password of the database user.
db-password=password
# The full database JDBC URL. If not provided, a default URL is set based on the selected database vendor.
db-url=jdbc:mysql://localhost:3308/keycloak8

이후 keycloak을 재 실행 시켜줍니다.


      
$ sh ./bin/kc.sh start-dev

그럼 아래와 같이 keycloak8 데이터베이스에 테이블이 92개가 생성된 것을 확인 할 수 있습니다.

Keycloak 테이블 생성
92개의 테이블이 생성됨


따로 테이블 생성이 필요 없는 이유는 keycloak이 실행되면서 liquibase가 실행되기 때문입니다. 


      
# Keycloak 실행시 아래와 같은 로그가 발생하는데, jpa-changelog-master.xml 정보로 데이터베이스를 업데이트 한다는 것을 확인 할 수 있습니다.
2022-06-29 13:46:21,750 INFO [org.keycloak.quarkus.runtime.storage.database.liquibase.QuarkusJpaUpdaterProvider] (main) Initializing database schema. Using changelog META-INF/jpa-changelog-master.xml

이제 http://localhost:9090 에 접속해 보면 아래와 같은 화면이 나옵니다. admin 계정을 생성해주세요.

Keycloak 어드민 로그인

이제 Export 했던 Realm 설정을 Import 하겠습니다.

Keycloak Realm 생성

Import 메뉴에서 Import를 하면 에러가 발생합니다.
그래서 위와 같이 Add realm 버튼을 누른 후 Select file을 클릭하여 백업해 두었던 realm-export.json파일을 선택합니다.

Keycloak Realm Export

정상적으로 Realm이 생성되고, 외부 DB에서도 Realm이 생성된 것을 확인 할 수 있습니다.

Keycloak Realm DB

수고하셨습니다.

반응형
저작자표시 동일조건 (새창열림)
  1. Mysql 5버전 설치
  2. Mysql 8버전 설치
  3. Realm 백업
  4. 외부 DB 설정
'Keycloak' 카테고리의 다른 글
  • [Keycloak] keycloakify로 테마 커스텀 - 화면 작업 방식
  • [Keycloak] keycloakify로 테마 커스텀 - 초기 설정
  • [Keycloak] Realm, Client, User 생성 (Quarkus, 17버전 이후)
  • [Keycloak] 설치 (Quarkus, 17버전 이후)
SooJae
SooJae
코드는 효율적으로, 공부는 비효율적으로
    반응형
  • SooJae
    이수재 블로그
    SooJae
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • Spring (8)
      • Next.JS (4)
      • React (3)
      • Angular (1)
      • Language (6)
        • Java (1)
        • Kotlin (1)
        • Javascript (4)
      • Keycloak (5)
      • Knowledge (16)
        • Test (4)
        • Web (9)
        • Security (2)
        • Data Structure (1)
      • Infra (9)
        • Proxmox (2)
        • AWS (0)
        • Kubernetes (3)
      • Tools (1)
        • IntelliJ (1)
      • Algorithm (2)
      • Tistory (4)
      • ETC (1)
  • 블로그 메뉴

    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Next.js
    Auth
    오블완
    티스토리챌린지
    openAI
    스프링 번역
    spring ai
    GPT
    ai
    deepl api
    스프링 ai
    ChatGPT
    Kotlin
    Functional Programming
    웹 마스터 도구
    React
    javascript
    test
    springboot
    keycloak
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
SooJae
[Keycloak] 외부 DB(Mysql)로 변경 (Quarkus, 17버전 이후)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.