Page 1 of 1

OpenKM no se puede conectar al servidor MySQL

PostPosted:Tue Sep 30, 2025 7:07 am
by rub1
Buenos días,

Instalé OpenKM sin problema, siguiendo las instrucciones al pie de la letra. Al acceder a la página de inicio de sesión, me aparece este mensaje de error:
Code: Select all
Application error
Class: org.apache.jasper.JasperException
Message: javax.servlet.ServletException: com.openkm.core.DatabaseException: Cannot open connection
Date: Mon Set 29 20:18:34 
He confirmado que la base de datos existe en MySQL y tiene las mismas credenciales de server.xml. Puedo iniciar sesión en el servidor MySQL con las credenciales de server.xml (por lo que creo que MySQL no tiene fallos).

También tengo conexión desde terminal sin problema:
mysql -h localhost -u openkm -p

- versión java 1.8
- versión MYSQL 8.04

Alguien puede echarme una mano?
Gracias.

Re: OpenKM no se puede conectar al servidor MySQL

PostPosted:Tue Sep 30, 2025 11:24 am
by jllort
Comparte el fichero server.xml para estar seguros de que has configurado correctamente la conexión
Comparte la traza completa del error.
¿Imagino que no se ha creado ninguna tabla en la base de datos?

Re: OpenKM no se puede conectar al servidor MySQL

PostPosted:Tue Sep 30, 2025 4:24 pm
by rub1
Hola,

No ha generado ninguna tabla. Adjunto fichero server.xml:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- Note:  A "Server" is not itself a "Container", so you may not
     define subcomponents such as "Valves" at this level.
     Documentation at /docs/config/server.html
 -->
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/>
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml"/>

    <Resource name="jdbc/OpenKMDS" auth="Container" type="javax.sql.DataSource"
              maxActive="100" maxIdle="30" maxWait="10000" validationQuery="select 1"
              username="openkm" password="!jtZ5kKl9J@h" driverClassName="com.mysql.cj.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/okmdb?useSSL=false&amp;autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF8&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC"/>

    <Resource name="mail/OpenKM" auth="Container" type="javax.mail.Session"
              mail.smtp.host="localhost" mail.from="testing@openkm.com"/>

  </GlobalNamingResources>

  <!-- A "Service" is a collection of one or more "Connectors" that share
       a single "Container" Note:  A "Service" is not itself a "Container",
       so you may not define subcomponents such as "Valves" at this level.
       Documentation at /docs/config/service.html
   -->
  <Service name="Catalina">

    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
    <!--
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->


    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
    -->
    <Connector port="8080" address="0.0.0.0" protocol="HTTP/1.1"
               connectionTimeout="20000" redirectPort="8443"/>
    <!-- A "Connector" using the shared thread pool-->
    <!--
    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->
    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443
         This connector uses the NIO implementation. The default
         SSLImplementation will depend on the presence of the APR/native
         library and the useOpenSSL attribute of the
         AprLifecycleListener.
         Either JSSE or OpenSSL style configuration may be used regardless of
         the SSLImplementation selected. JSSE style configuration is used below.
    -->
    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    -->
    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
         This connector uses the APR/native implementation which always uses
         OpenSSL for TLS.
         Either JSSE or OpenSSL style configuration may be used. OpenSSL style
         configuration is used below.
    -->
    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                         certificateFile="conf/localhost-rsa-cert.pem"
                         certificateChainFile="conf/localhost-rsa-chain.pem"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    -->

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" address="127.0.0.1" protocol="AJP/1.3" redirectPort="8443"/>


    <!-- An Engine represents the entry point (within Catalina) that processes
         every request.  The Engine implementation for Tomcat stand alone
         analyzes the HTTP headers included with the request, and passes them
         on to the appropriate Host (virtual host).
         Documentation at /docs/config/engine.html -->

    <!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
    -->
    <Engine name="Catalina" defaultHost="localhost">

      <!--For clustering, please take a look at documentation at:
          /docs/cluster-howto.html  (simple how to)
          /docs/config/cluster.html (reference documentation) -->
      <!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      -->

      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
           via a brute-force attack -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost" appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b"/>

        <!-- External resources -->
        <!-- <Context docBase="${catalina.base}/custom" path="/OpenKM/custom" reloadable="true"/> -->
      </Host>
    </Engine>
  </Service>
</Server>

Re: OpenKM no se puede conectar al servidor MySQL

PostPosted:Wed Oct 01, 2025 6:52 am
by jllort
* La configuracion de la base de datos parece correcta.
* En vez de mysql te aconsejaría instalar mariadb ( fíjate en la sección https://docs.openkm.com/kcenter/view/ok ... riadb.html ) -> esto implica cambiar el driver y la configuracion del parámetro hibernate.dialect en el fichero OpenKM.cfg. Asegúrate que el parámetro hibernate.hbm2ddl=create y borra la carpeta repository si es que ha sido creada.

Tendrías que probar la conexion por completo desde la terminal:
> mysql -h localhost -u openkm -p
> use okmdb;

Finalmente si quieres continuar con la mysql, es posible que este acivado el SSL o algo similar. Borra la carpeta de logs, arranca la aplicación y intenta logearte ( fallará ). Para la aplicación, comprime la carpeta de logs en un zip y compartelo por aquí

Re: OpenKM no se puede conectar al servidor MySQL

PostPosted:Wed Oct 01, 2025 8:32 pm
by rub1
Hola, he conseguido que aparezca la pagina de log in, al intentar iniciar sesión ha fallado como comentabas.

Re: OpenKM no se puede conectar al servidor MySQL

PostPosted:Wed Oct 01, 2025 11:39 pm
by rub1
He hecho una segunda instalación con mariadb como recomendabas, y me ocurre exactamente lo mismo.
Tambien he revisado la Base de datos y veo que únicamente está el usuario administrator, el de openkm no existe, debería crearlo?

comparto también los logs y el server.xml por si ayuda