Keycloak切换外部数据库

Keycloak默认使用嵌入式关系数据库H2,真实生产环境肯定是不符合要求的,在其官方文档中有这么一段话

We highly recommend that you replace it with a more production ready external database. The H2 database is not very viable in high concurrency situations and should not be used in a cluster either.

可见其官方也是推荐使用外部数据库作为生产环境。
以mysql为例,切换数据库大体分为五步:
1、下载对应的JDBC驱动
2、将驱动打包安装到Keycloak中
3、配置文件中声明使用的JDBC驱动
4、修改数据源设置以使用新的JDBC驱动
5、修改数据库连接参数(可选)


1.下载JDBC驱动,可从官网或maven仓库直接下载,不再赘述。
2.将驱动打包放入Keycloak的classpath中
2.1在路径keycloak-4.1.0.Final\modules\system\layers\keycloak下新建目录com\mysql\main,并将下载的Jar放入此目录。目录名称可随意修改,不过官方推荐使用包路径作为目录。

The convention is use the Java package name of the JDBC driver for the name of the directory structure. For PostgreSQL, create the directory org/postgresql/main.

2.2 jar同级目录下新建文件module.xml,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="com.mysql">
    <resources>
        <resource-root path="mysql-connector-java-8.0.11.jar"/>
    </resources>
    <dependencies>
    	<module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

其中name应为包名,后文配置数据源过程中会用到此name。dependencies包含可能会用到的依赖项。
3.编辑standalone.xml,位置在keycloak-4.1.0.Final\standalone\configuration。若为集群模式编辑standalone-ha.xml。寻找drivers标签,默认有一个h2数据库的配置,我们要在同级增加一个mysql的配置,内容如下:

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

module即为之前module.xml中定义的name,此处的name为driver的名称,在接下来的数据源配置中会使用到。
此处注意,xa-datasource-class的路径可能会随着JDBC版本变化而变化,可从jar包中寻找到正确的路径。
4.向上寻找datasources标签,默认此处有两项datasource,我们注释掉名称为KeycloakDS的数据源,并加上mysql的。注意不要把ExampleDS也注释掉,启动会报错的。新增内容如下:

<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
	<connection-url>jdbc:mysql://localhost:3306/keycloak</connection-url>
	<driver>mysql</driver>
	<pool>
		<max-pool-size>20</max-pool-size>
	</pool>
	<security>
		<user-name>root</user-name>
		<password>123456</password>
	</security>
</datasource>

driver处对应上面定义driver标签中的name。其余项目见文知意,根据具体项目修改即可,此处需要手工建立keycloak库。
5.寻找name为connectionsJpa的spi标签,此标签内可定义诸多数据源选项,例如showsql,formatsql等等,可根据需要修改。支持的配置项详见官方文档。


配置完成,启动对应的bat或shell文件,通过数据库工具可以看到自动新建了93张表。
这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值