【问题标题】:Keycloak Export only accept H2 datase-URL (Datasource: URL format error; must be jdbc:h2 ... but is jdbc:mariadb: ...)Keycloak Export 只接受 H2 datase-URL(数据源:URL 格式错误;必须是 jdbc:h2 ... 但 jdbc:mariadb: ...)
【发布时间】:2022-12-15 05:48:21
【问题描述】:

钥匙斗篷版本:20.0.1

Docker版本:20.10.12

Docker-Compose 版本:2.2.2

Github问题:https://github.com/keycloak/keycloak/issues/15898

问题

我喜欢从 MariaDB 数据库导出 Keycloak 数据, 但这是不可能的。

我使用的来源是:https://www.keycloak.org/server/importExport

导出命令export只接受一个 H2 数据库 URL,甚至我已经使用适当的数据库供应商创建了一个构建。我在执行导出之前创建了一个新版本:build --db=mariadb

如果我尝试这样做,则会显示错误从 MariaDB 数据库中导出 Keycloak 数据.

错误是:

Datasource '<default>': URL format error; must be "jdbc:h2:{ {.|mem:}[name] | [file:]fileName | {tcp|ssl}:[//]server[:port][,server2[:port]]/name }[;key=value...]" but is "jdbc:mariadb://db.my-domain.de:3306/keycloak"

预期行为

预期的行为是,export 命令接受像 jdbc:mariadb:... 这样的 MariaDB 数据库 URL。

实际行为

实际行为是,即使我之前执行过build --db=mariadbexport 命令也只接受像jdbc:h2:... 这样的H2 数据库-URL。

此外,show-config 命令显示 kc.db = mariadb (KcEnvVarConfigSource) 不是。

如何重现

version: '3.9'

services:
  keycloak-export:
      container_name: keycloak-export
      image: quay.io/keycloak/keycloak:latest
      environment:
        KC_HOSTNAME: login.my-domain.com
        KC_HOSTNAME_STRICT_HTTPS: true 
        KC_HTTP_ENABLED: false
        KC_PROXY: edge
        KC_DB: mariadb
        KC_DB_URL_HOST: db.my-domain.com
        KC_DB_URL_DATABASE: keycloak
        KC_DB_URL_PORT: 3306
        KC_DB_USERNAME: ***
        KC_DB_PASSWORD: ***
        KC_HTTPS_KEY_STORE_FILE: /keystore.p12
        KC_HTTPS_KEY_STORE_PASSWORD: ***
      command:
        - export --dir /export_data
      volumes:
        - ./keystore.p12:/keystore.p12
        - ./export_data:/export_data
      restart: "no"

附加信息

在生产模式下,Keycloak-Server 基于这个 Docker Compose 文件连接到 MariaDB-Database-Server:

version: '3.9'

services:
  keycloak:
      container_name: keycloak
      image: quay.io/keycloak/keycloak:latest
      environment:
        KC_HOSTNAME: login.my-domain.de
        KC_HOSTNAME_STRICT_HTTPS: true 
        KC_HTTP_ENABLED: false
        KC_PROXY: edge
        KC_DB: mariadb
        KC_DB_URL_HOST: db.my-domain.de
        KC_DB_URL_DATABASE: keycloak
        KC_DB_URL_PORT: 3306
        KC_DB_USERNAME: ***
        KC_DB_PASSWORD: ***
        KC_HTTPS_KEY_STORE_FILE: /keystore.p12
        KC_HTTPS_KEY_STORE_PASSWORD: ***
        KEYCLOAK_ADMIN: ***
        KEYCLOAK_ADMIN_PASSWORD: ***
        KC_TRANSACTION_XA_ENABLED: true
        KC_HEALTH_ENABLED: true
        KC_METRICS_ENABLED: true
      command:
        - start
      ports:
        - 8080:8080
      volumes:
        - ./keystore.p12:/keystore.p12
      restart: always

【问题讨论】:

    标签: docker jdbc docker-compose mariadb keycloak


    【解决方案1】:

    您必须先构建配置,然后再导出。所以你应该添加“构建”命令。

    version: '3.9'
    
    services:
      keycloak-export:
          container_name: keycloak-export
          image: quay.io/keycloak/keycloak:latest
          environment:
            KC_HOSTNAME: login.my-domain.com
            KC_HOSTNAME_STRICT_HTTPS: true 
            KC_HTTP_ENABLED: false
            KC_PROXY: edge
            KC_DB: mariadb
            KC_DB_URL_HOST: db.my-domain.com
            KC_DB_URL_DATABASE: keycloak
            KC_DB_URL_PORT: 3306
            KC_DB_USERNAME: ***
            KC_DB_PASSWORD: ***
            KC_HTTPS_KEY_STORE_FILE: /keystore.p12
            KC_HTTPS_KEY_STORE_PASSWORD: ***
          command:
            - build
            - export --dir /export_data
          volumes:
            - ./keystore.p12:/keystore.p12
            - ./export_data:/export_data
          restart: "no"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 2017-08-07
      • 1970-01-01
      • 2019-06-05
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多