Keycloak开发模式默认H2数据库为空,核心数据存储位置在哪?
Keycloak开发模式下H2数据库定位与访问问题解答
为什么你看到的H2数据库是空的
开发模式下,Keycloak默认使用内存型H2数据库,而非你找到的C:\Users\[UserName]\data\keycloakdb.mv文件。这个文件只是未被实际使用的空占位文件,所以登录H2控制台后只能看到系统默认的INFORMATION_SCHEMA表。内存H2的生命周期和Keycloak进程绑定,进程关闭后数据直接消失。
正确访问业务数据的步骤
1. 提取内存H2的连接地址
启动Keycloak后,在控制台日志里搜索JDBC URL,会找到类似这样的日志行:
JDBC URL: jdbc:h2:mem:keycloak;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
这里的jdbc:h2:mem:keycloak就是内存H2的真实连接地址。
2. 登录H2控制台查看数据
- 打开H2控制台(默认访问地址是
http://localhost:8080/h2-console) - 在登录界面填入以下参数:
- JDBC URL:粘贴刚才从日志里拿到的内存H2地址
- User Name:默认是
sa - Password:留空即可
- 点击
Connect,就能看到包含REALM、USER_ENTITY、CLIENT等业务表的完整数据库了。
让开发模式数据持久化的方法
如果想把数据保存到本地文件(重启Keycloak后不丢失),可以在启动时添加参数指定文件型H2数据库:
kc.bat start-dev --db=h2 --db-url=jdbc:h2:file:C:\Users\[UserName]\data\keycloakdb;DB_CLOSE_DELAY=-1
之后Keycloak会把所有业务数据写入你指定的文件,直接用这个文件路径作为JDBC URL登录H2控制台,就能看到所有持久化的数据。
内容的提问来源于stack exchange,提问作者Georgi D.
相关产品推荐
相关产品推荐

