zoukankan      html  css  js  c++  java
  • 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 那段:

                    <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)

    
    
    未完待续

    应该是网络问题,明天再看。

    作者注: 本站文章除注明转载外,均为本站原创或编辑,欢迎大家转载,但请务必注明出处,尊重他人成果,谢谢。 任何问题请联系1187616732@qq.com
  • 相关阅读:
    树莓派研究笔记(2)-- 安装Nginx 服务器,PHP 和 SQLite
    树莓派研究笔记(1)-- 安装Mono
    Qemu虚拟机 玩树莓派最新版系统 (截止2017-04-10)
    CLRInjection
    CLRMonitor
    Xamarin Mono for VS开发窗体标题(Title)乱码解决方案
    精美3D中国象棋
    怀旧系列(5)----大学时代的疯狂
    怀旧系列(4)----文曲星编程GV-Basic
    怀旧系列(3)----Pascal
  • 原文地址:https://www.cnblogs.com/laijx/p/14819123.html
Copyright © 2011-2022 走看看