centos7 安装 keycloak 连接外部mysql
由于我是已经安装和配置好了keycloak,所以我这里说的只是将keycloak 的自带数据库改为mysql。前期的安装keycloak可以参考其他博客。
环境
https://www.keycloak.org/docs/latest/server_installation/index.html
CentOS Linux release 7.5.1804 (Core)
keycloak-8.0.2
开始
主要参照这三个博客的步骤:
https://blog.csdn.net/zhuwei_clark/article/details/84260071
https://blog.csdn.net/qq_16116549/article/details/110069913
https://blog.csdn.net/qq_30038111/article/details/83659254
下载包,解压,改配置文件。
我刚开始没想着连外部mysql,所以除了mysql那些都做好了,直接启动。正常。
如果除开连外部mysql这个过程倒也简单。
但是现在研发同学告诉我要用自己的数据测试,而且keycloak官方也表示h2的库不稳定,不建议用。
所以也得改为mysql。
首先是下载连接mysql的驱动,是个jar包。下载地址:https://dev.mysql.com/downloads/
下载后放到:keycloak/modules/system/layers/base/com/mysql/main/
并且!!!这是其他三个博客都没说到的,touch module.xml 把这个module.xml 也放在 keycloak/modules/system/layers/base/com/mysql/main/
接下来,其他博客说:修改jndi-name="java:jboss/datasources/KeycloakDS
这节的xml ,把h2 的这个设置直接修改为mysql的
我这么做了。
但后来发现官方的操作是 新增mysql drive的配置,保留h2 那段:
1 2 3 4 5 6 7 8 9 | <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> |
然后找到KeycloakDS 这段,改为自己的连接信息:
<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:mysql://10.206.230.218:3306/keycloak?useSSL=false</connection-url> <driver>mysql</driver> <security> <user-name>keycloak</user-name> <password>password</password> </security> </datasource>
然后我就启动了。
结果报错。 忘记截图了,大概是说
com.mysql.jdbc.jdbc2.optional.MysqlXADataSource 这个类找不到。
试了好多次都不行:
最后问了下研发同学,果然还是他们有经验。
原因是这个类的名字跟你服务器的路径对不上,所以找不到类。
毕竟网上那么多人,每个文件的路径不可能一致。所以应该这样:
找到刚刚的驱动jar包,解压,找到
MysqlXADataSource 这个文件
[appdeploy@1a41vla0941zzzz mysql-connector-java-8.0.25]$ find . -name MysqlXADataSource* ./src/main/user-impl/java/com/mysql/cj/jdbc/MysqlXADataSource.java ./com/mysql/cj/jdbc/MysqlXADataSource.class [appdeploy@1a41vla0941zzzz mysql-connector-java-8.0.25]$
发现路径在cj下面,那么类名应该拼接为:
com.mysql.cj.jdbc.MysqlXADataSource
再次重启。发现
16:41:39,325 WARN [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (ServerService Thread Pool -- 57) IJ000604: Throwable while attempting to get a new connection: null: javax.resource.ResourceException: IJ031084: Unable to create connection
at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:345)
at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:352)
at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:287)
at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.createConnectionEventListener(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:1328)
未完待续
应该是网络问题,明天再看。
-----------------------------------------------------------------
能力不高,水平有限,如有不妥还请指出,谢谢!
本文来自博客园,作者:Laijx,转载请注明原文链接:https://www.cnblogs.com/laijx/p/14819123.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下