Keycloak换mysql存储详细步骤

Keycloak换mysql存储详细步骤

1207发表于2019-12-22

Keycloak默认是采用的H2数据库,一个轻量级的嵌入式数据库。如果要生产上用,显然这个数据库是不太适合的。

下面我给大家分享一下我替换成mysql的经验步骤。

一、创建数据库

登录mysql

from clipboard

创建一个数据库用来存储Keycloak相关数据。

create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";

数据库名为“keycloak”。


二、修改Keycloak配置

1、下载mysql驱动:

http://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.13/
2、配置wildfly 的 module:


创建目录:keycloak-8.0.1\modules\system\layers\base\com\mysql\main ,把驱动文件 mysql-connector-java-8.0.13.jar 复制到此目录
新建文件:module.xml,内容如下:


<?xml version="1.0" encoding="UTF-8"?>
<module name="com.mysql" xmlns="urn:jboss:module:1.5">
    <resources>
        <resource-root path="mysql-connector-java-8.0.13.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.servlet.api" optional="true"/>
    </dependencies>
</module>
如下图:


from clipboard

3、配置 keycloak-8.0.1\standalone\configuration\standalone.xml 文件:

在节点drivers下面增加一个driver,复制如下内容:

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

在节点datasources下面增加一个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://localhost:3306/keycloak?useSSL=false&amp;serverTimezone=GMT%2B8&amp;characterEncoding=UTF-8</connection-url>
    <driver>mysql</driver>
    <security>
        <user-name>root</user-name>
        <password>root</password>
    </security>
</datasource>
注释掉原来的h2 datasouce节点。(datasource jndi-name="java:jboss/datasources/KeycloakDS")

三、启动并验证效果

1、启动bin下面的standalone.bat

from clipboard

from clipboard

因为第一次启动,需要创建数据库,所以会要等待段时间。创建成功后会有以下提示:

from clipboard

这个时候你可以输入http://localhost:8080创建管理员账号了。

小编蓝狐