Keycloak使用外部mysql數據庫

Keycloak使用外部mysql數據庫


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,內容如下:
<?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>

修改standalone.xml

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

<drivers>
    <driver name="h2" module="com.h2database.h2">
        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
    </driver>
    <driver name="mysql" module="com.mysql">
        <xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSource</xa-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=TRUE</connection-url>
    <driver>h2</driver>
    <security>
        <user-name>sa</user-name>
        <password>sa</password>
    </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&amp;serverTimezone=GMT%2B8&amp;characterEncoding=UTF-8</connection-url> <!-- 增加時區東八區,增加強制UTF8編碼,讓其能夠寫入特殊字符,關閉ssl警告 -->
    <driver>mysql</driver>
    <security>
        <user-name>用戶名</user-name>
        <password>密碼</password>
    </security>
</datasource>

重新啓動keycloak

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章