keycloak 9.0 迁移数据库到MySQL 8.0.19

1.官方文档

  • 下载地址
https://www.keycloak.org/downloads.html
  • 数据库配置
https://www.keycloak.org/docs/latest/server_installation/index.html#database-configuration

2.驱动准备

  • Oracle官网下载下载mysql-connector-java-8.0.19.zip,略。
  • 解压~/Downloads/mysql-connector-java-8.0.19.zip.
  • 解压mysql-connector-java-8.0.19.jar,进入目录查找
find . -name "MysqlXADataSource.class"

记下路径

./com/mysql/cj/jdbc/MysqlXADataSource.class

3.下载并配置keycloak 9.0

  • 下载地址
https://downloads.jboss.org/keycloak/9.0.0/keycloak-9.0.0.zip
  • 解压~/Downloads/keycloak-9.0.0.zip
cd ~/Downloads    
unzip keycloak-9.0.0.zip
cd keycloak-9.0.0
  • 拷贝MySQL驱动
mkdir -p ./modules/system/layers/base/com/mysql/main/
cp ../mysql-connector-java-8.0.19/mysql-connector-java-8.0.19.jar ./modules/system/layers/base/com/mysql/main/
  • 建立module.xml文件,与mysql-connector-java-8.0.19.jar同一目录
<?xml version="1.0" encoding="UTF-8"?>
<module name="com.mysql" xmlns="urn:jboss:module:1.3">
    <resources>
        <resource-root path="mysql-connector-java-8.0.19.jar"/>
    </resources>

    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.servlet.api" optional="true"/>
    </dependencies>
</module>
  • 修改驱动及数据源配置
cd ~/Downloads/keycloak-9.0.0
vim standalone/configuration/standalone.xml

修改三处。
a.增加MySQL驱动

                <drivers>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>

                    <!-- mysql driver -->
                    <driver name="mysql" module="com.mysql">
                        <xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSource</xa-datasource-class>
                    </driver>
                </drivers>


b.注释原数据源,增加MySQL数据源

                <!-- <datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
                    <connection-url>jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource> -->
                <!-- mysql datasource -->
                <datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
                    <connection-url>jdbc:mysql://127.0.0.1:3306/keycloak?useSSL=false&amp;connectionCollation=utf8_general_ci&amp;characterSetResults=utf8&amp;characterEncoding=utf8</connection-url>
                    <driver>mysql</driver>
                    <security>
                        <user-name>root</user-name>
                        <password>password</password>
                    </security>
                </datasource>
                

c.修改jpa配置

            <spi name="connectionsJpa">
                <provider name="default" enabled="true">
                    <properties>
                        <property name="dataSource" value="java:jboss/datasources/KeycloakDS"/>
                        <!-- <property name="initializeEmpty" value="true"/>
                        <property name="migrationStrategy" value="update"/> -->
                        <property name="initializeEmpty" value="false"/>
                        <property name="migrationStrategy" value="manual"/>
                        <property name="migrationExport" value="${jboss.home.dir}/keycloak-database-update.sql"/>
                    </properties>
                </provider>
            </spi>

4.准备数据库

  • 建立数据库
CREATE DATABASE IF NOT EXISTS keycloak  DEFAULT CHARSET utf8mb4;

*导入数据脚本,若keycloak-database-update.sql不存在,先执行第5步,运行./bin/standalone.sh,报错后就有了。

use keycloak;
source ~/Downloads/keycloak-9.0.0/keycloak-database-update.sql;
  • 确认结果
mysql> show tables;
+-------------------------------+
| Tables_in_keycloak            |
+-------------------------------+
...
...
| WEB_ORIGINS                   |
+-------------------------------+
93 rows in set (0.00 sec)

5.启动

cd ~/Downloads/keycloak-9.0.0
./bin/standalone.sh

打开浏览器访问

http://localhost:8080/auth
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容