数据库重启后Keycloak无法连接外部数据库?

Sub*_*shi 7 keycloak

我们正在使用 Keycloak 4.2.1.Final,我们注意到一些奇怪的问题。Keycloak 正在使用外部数据库 [Maria DB]

如何重现该问题?

  1. 安装并运行 Keycloak。
  2. 使用外部数据库来存储数据,我们使用mariadb。
  3. Keycloak 启动/运行,MariaDB 启动并运行
  4. 现在停止 Mariadb 服务systemctl stop mariadb,然后启动 mariadbsystemctl start mariadb并检查 keycloak 是否不起作用
  5. 尝试登录 keycloak https://localhost:8666/auth并检查它是否允许登录。
  6. 在服务器日志中它将显示连接已关闭

解决方案1 ​​-

重新启动 Mariadb 后,还必须启动 Keycloak 服务,然后 service keycloak restartKeycloak 将开始正确响应。

但这不是一个可行的解决方案,我正在为此寻找合适的解决方案。有人曾经遇到或检查过此类问题吗?

Sub*_*shi 7

最后通过修改Keycloak的Stanalone.xml文件解决了这个问题。您可以在这个位置找到该文件/opt/keycloak/standalone/configuration/standalone.xml,您必须在文件中添加以下行

 <validation>                   
       <check-valid-connection-sql>select 1</check-valid-connection-sql>
       <background-validation>true</background-validation>
       <background-validation-millis>15000</background-validation-millis>
    </validation>
Run Code Online (Sandbox Code Playgroud)

<datasource/>添加上述更改后,应在标记内添加<datasource/>此行,如下所示

<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true"> 
     <connection-url>jdbc:mariadb://localhost:3306/DBName?autoReconnect=true</connection-url>
           <driver>mariadb</driver> 
            <security> 
             <user-name>user</user-name> 
             <password>${VAULT::datasource::default-password::1}</password>
             </security>
             <validation>                     
             <check-valid-connection-sql>select 1</check-valid-connection-sql>
             <background-validation>true</background-validation>
              <background-validation-millis>15000</background-validation-millis>
              </validation>
</datasource>
Run Code Online (Sandbox Code Playgroud)