Hello, After upgrading guacamole to 1.6 authentication through a database no longer works. I'm using MariaDB, guacamole 1.5.5 works without issue. I did perform the schema upgrade to 1.6, but that didn't fix it. I looked through the logs on guacamole and it looks like it doesn't load the mysql extension even if you have MYSQL_ENABLED set to true. I've also made sure that MSQL_DRIVER is set to mariadb.
The web interface will load, but logging in just gives the error "invalid login" 18:28:36.774 [http-nio-8080-exec-9] WARN o.a.g.event.EventLoggingListener - Authentication attempt from 10.22.39.45 for user "guacadmin" failed: unknown error (no specific failure recorded) If I manually move the guacamole-auth-jdbc-mysql-1.6.0.jar into the extensions folder that's mapped on docker, it gives me additional information. * 17:58:54.251 [main] DEBUG o.a.g.e.LanguageResourceService - Merged strings with existing language: "zh" * 17:58:54.252 [main] INFO o.a.g.extension.ExtensionModule - Extension "MySQL Authentication" (mysql) loaded. * 17:58:54.252 [main] DEBUG o.a.g.extension.ExtensionModule - [2] Binding AuthenticationProvider "org.apache.guacamole.auth.file.FileAuthenticationProvider". * 17:58:54.254 [main] DEBUG o.a.g.extension.ExtensionModule - [0] Binding listener "org.apache.guacamole.event.EventLoggingListener". * 17:58:54.335 [main] INFO o.a.g.t.w.WebSocketTunnelModule - Loading JSR-356 WebSocket support... * 17:58:54.343 [main] DEBUG o.a.guacamole.tunnel.TunnelModule - WebSocket module loaded: org.apache.guacamole.tunnel.websocket.WebSocketTunnelModule * 17:58:54.410 [main] INFO o.a.g.event.EventLoggingListener - The Apache Guacamole web application has started. * 17:58:54.696 [main] WARN o.g.jersey.server.wadl.WadlFeature - JAXBContext implementation could not be found. WADL feature is disabled. * 05-Sep-2025 17:58:54.952 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/tmp/catalina-base.6umWG2S13V/webapps/ROOT.war] has finished in [3,364] ms * 05-Sep-2025 17:58:54.955 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] * 05-Sep-2025 17:58:54.963 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [3412] milliseconds * 17:59:08.679 [http-nio-8080-exec-2] DEBUG o.a.i.t.jdbc.JdbcTransaction - Opening JDBC Connection * 17:59:08.680 [http-nio-8080-exec-2] DEBUG o.a.g.a.j.DynamicallyAuthenticatedDataSource - Creating new database connection for pool. * 17:59:08.682 [http-nio-8080-exec-2] WARN o.a.g.e.AuthenticationProviderFacade - The "mysql" authentication provider has encountered an internal error which will halt the authentication process. If this is unexpected or you are the developer of this authentication provider, you may wish to enable debug-level logging. If this is expected and you wish to ignore such failures in the future, please set "skip-if-unavailable: mysql" within your guacamole.properties. * 17:59:08.683 [http-nio-8080-exec-2] DEBUG o.a.g.event.EventLoggingListener - Empty authentication attempt (login screen initialization) from 10.22.39.45 failed: * ### Error querying database. Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. * ### The error may exist in org/apache/guacamole/auth/jdbc/user/UserMapper.xml * ### The error may involve org.apache.guacamole.auth.jdbc.user.UserMapper.selectOne * ### The error occurred while executing a query * ### Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. * 17:59:08.687 [http-nio-8080-exec-2] ERROR o.a.g.rest.RESTExceptionMapper - Unexpected internal error: * ### Error querying database. Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. * ### The error may exist in org/apache/guacamole/auth/jdbc/user/UserMapper.xml * ### The error may involve org.apache.guacamole.auth.jdbc.user.UserMapper.selectOne * ### The error occurred while executing a query * ### Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. * 17:59:08.687 [http-nio-8080-exec-2] DEBUG o.a.g.rest.RESTExceptionMapper - Unexpected error in REST endpoint. * org.apache.ibatis.exceptions.PersistenceException: * ### Error querying database. Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. * ### The error may exist in org/apache/guacamole/auth/jdbc/user/UserMapper.xml * ### The error may involve org.apache.guacamole.auth.jdbc.user.UserMapper.selectOne * ### The error occurred while executing a query * ### Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. * at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) * at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:156) * at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) * at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) * at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75) * at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) * at java.base/java.lang.reflect.Method.invoke(Method.java:580) * at org.apache.ibatis.session.SqlSessionManager$SqlSessionInterceptor.invoke(SqlSessionManager.java:355) * at jdk.proxy4/jdk.proxy4.$Proxy41.selectOne(Unknown Source) * at org.apache.ibatis.session.SqlSessionManager.selectOne(SqlSessionManager.java:164) * at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:87) * at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:141) * at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86) * at jdk.proxy4/jdk.proxy4.$Proxy45.selectOne(Unknown Source) * at org.apache.guacamole.auth.jdbc.user.UserService.retrieveAuthenticatedUser(UserService.java:404) * at org.apache.guacamole.auth.jdbc.JDBCAuthenticationProviderService.authenticateUser(JDBCAuthenticationProviderService.java:83) * at org.apache.guacamole.auth.jdbc.InjectedAuthenticationProvider.authenticateUser(InjectedAuthenticationProvider.java:76) * at org.apache.guacamole.extension.AuthenticationProviderFacade.authenticateUser(AuthenticationProviderFacade.java:202) * at org.apache.guacamole.rest.auth.AuthenticationService.authenticateUser(AuthenticationService.java:132) * at org.apache.guacamole.rest.auth.AuthenticationService.getAuthenticatedUser(AuthenticationService.java:235) * at org.apache.guacamole.rest.auth.AuthenticationService.authenticate(AuthenticationService.java:391) * at org.apache.guacamole.rest.auth.TokenRESTService.createToken(TokenRESTService.java:174) * at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) * at java.base/java.lang.reflect.Method.invoke(Method.java:580) * at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) * at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) * at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) * at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) * at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) * at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) * at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) * at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) * at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256) * at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) * at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) * at org.glassfish.jersey.internal.Errors.process(Errors.java:292) * at org.glassfish.jersey.internal.Errors.process(Errors.java:274) * at org.glassfish.jersey.internal.Errors.process(Errors.java:244) * at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) * at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235) * at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684) * at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:397) * at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:349) * at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:379) * at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) * at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) * at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:290) * at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:280) * at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:184) * at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:89) * at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85) * at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121) * at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133) * at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) * at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) * at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) * at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) * at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) * at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) * at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) * at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:656) * at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:762) * at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) * at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346) * at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) * at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) * at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935) * at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1826) * at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) * at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1189) * at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:658) * at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) * at java.base/java.lang.Thread.run(Thread.java:1583) * Caused by: java.sql.SQLException: Error setting driver on UnpooledDataSource. Blommer Chocolate Company Confidentiality, LLC Notice: The information transmitted in this email is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination, disclosure or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this email in error, please promptly contact the sender and immediately delete the email including all attachments from all electronic devices.