Keycloak 在数据库重新启动后,KeyClope无法连接外部数据库?
我们使用的是keydove 4.2.1.Final,我们注意到了一些奇怪的问题。keydove使用的是外部数据库[mariadb] 如何重现该问题?Keycloak 在数据库重新启动后,KeyClope无法连接外部数据库?,keycloak,Keycloak,我们使用的是keydove 4.2.1.Final,我们注意到了一些奇怪的问题。keydove使用的是外部数据库[mariadb] 如何重现该问题? 安装并运行KeyClope 使用外部数据库存储数据,我们使用mariadb Keyclope启动/运行,MariaDB启动并运行 现在停止Mariadb服务systemctl停止Mariadb,然后启动Mariadbsystemctl启动Mariadb,并检查keydepot是否工作 尝试登录到KeyClope并检查它是否不允许登录 在服务器日志中
systemctl停止Mariadb
,然后启动Mariadbsystemctl启动Mariadb
,并检查keydepot是否工作重新启动服务密钥斗篷
,然后密钥斗篷将开始正确响应
但这不是一个可行的解决方案,我正在为此寻找一个合适的解决方案。有人曾经遇到或检查过这种问题吗?最后,通过修改keydape的stanlone.xml文件,这个问题得到了解决。您可以在这个位置找到该文件
/opt/keydape/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>
选择1
真的
15000
添加上述更改后,应在
标记内添加此行
如下所示
<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>
jdbc:mariadb://localhost:3306/DBName?autoReconnect=true
马里亚布
使用者
${VAULT::datasource::默认密码::1}
选择1
真的
15000
添加验证检查后,KeyClope将在给定的时间间隔内继续在后台检查与数据库的连接。因此,即使连接隧道已断开,它仍将重新连接到数据库。
没有数据源中的验证,一旦连接断开,它就不会重新连接。这就是为什么我们需要添加
<validation>
<check-valid-connection-sql>select 1</check-valid-connection-sql>
<background-validation>true</background-validation>
<background-validation-millis>15000</background-validation-millis>
</validation>
选择1
真的
15000
希望这能澄清您的疑问。我和您面临着完全相同的问题,您的解决方案奏效了。但是你介意解释一下为什么这些代码行是有效的吗?@henry不确定,因为它是1年前的问题,但看起来它是数据库方面的问题,而不是Keyclope方面的问题。很好的澄清