Keycloak使用外部mysql数据库

Keycloak使用外部mysql数据库

  • 下载mysql驱动
  • 配置module
  • 修改standalone.xml

keycloak standalone启动后,默认使用的是内部自带的h2数据库,我们暂使用时通常需要修改为本地mysql存储,下面简单介绍如何让keycloak使用外部mysql数据库。

下载mysql驱动

这里提供一个maven仓库 下载地址(mysql-connector-java-8.0.13.jar)

配置module

  1. 在keycloak根目录下创建目录keycloak/modules/system/layers/base/com/mysql/main/
  2. 将驱动文件copy到此目录下
  3. 新建文件:module.xml,内容如下:

<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>

修改standalone.xml

找到配置节,在下新增mysql配置

<drivers>
    <driver name="h2" module="com.h2database.h2">
        <xa-datasource-class>org.h2.jdbcx.JdbcDataSourcexa-datasource-class>
    driver>
    <driver name="mysql" module="com.mysql">
        <xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSourcexa-datasource-class>
    driver>
drivers>

注释掉下面这段配置

<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=TRUEconnection-url>
    <driver>h2driver>
    <security>
        <user-name>sauser-name>
        <password>sapassword>
    security>
datasource>

新增配置如下

<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
    <connection-url>jdbc:mysql://mysql1.db.517.jiali:3307/keycloak?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=UTF-8connection-url> 
    <driver>mysqldriver>
    <security>
        <user-name>用户名user-name>
        <password>密码password>
    security>
datasource>

重新启动keycloak

你可能感兴趣的:(Keycloak,中间件)