It seems that Guacamole is still unable to use the latest MariaDB connector using the staging/1.6 branch. This have been a problem with 1.5.4/1.5.5 too.
In /etc/guacamole/lib I have both mariadb-java-client-3.4.1.jar mysql-connector-j-8.0.32.jar and in /etc/guacamole/guacamole.properties # MySQL properties mysql-hostname: localhost mysql-port: 3306 mysql-database: dbname mysql-username: username mysql-password: userpass mysql-driver: mariadb #mysql-driver: mysql mysql-user-password-min-length: 8 mysql-user-password-require-multiple-case: true mysql-user-password-require-symbol: true mysql-user-password-require-digit: true mysql-user-password-prohibit-username: true If I configure as ##mysql-driver: mariadb mysql-driver: mysql and restart tomcat, using the MySQL Connector, everything works as expected. However, if I change the configuration to mysql-driver: mariadb #mysql-driver: mysql and restart tomcat, guacamole is unable to find and use the MariaDB Connector I get the following errors in the /var/log/messages file Oct 18 12:26:22 apps9 server[82442]: 12:26:22.598 [http-nio-8080-exec-6] WARN o.a.g.a.mysql.conf.MySQLEnvironment - You have enabled case-sensitive usernames; however, MySQL's default collations do not support case-sensitive string comparisons. If you really want case-sensitive usernames you will need to configure your database appropriately. Oct 18 12:26:22 apps9 server[82442]: 12:26:22.637 [http-nio-8080-exec-6] DEBUG o.a.i.t.jdbc.JdbcTransaction - Opening JDBC Connection Oct 18 12:26:22 apps9 server[82442]: 12:26:22.638 [http-nio-8080-exec-6] DEBUG o.a.g.a.j.DynamicallyAuthenticatedDataSource - Creating new database connection for pool. Oct 18 12:26:22 apps9 server[82442]: 12:26:22.647 [http-nio-8080-exec-6] 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. Oct 18 12:26:22 apps9 server[82442]: 12:26:22.647 [http-nio-8080-exec-6] DEBUG o.a.g.event.EventLoggingListener - Empty authentication attempt (login screen initialization) from [192...16, 192...10] failed: Oct 18 12:26:22 apps9 server[82442]: ### Error querying database. Cause: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/dbname Oct 18 12:26:22 apps9 server[82442]: ### The error may exist in org/apache/guacamole/auth/jdbc/user/UserMapper.xml Oct 18 12:26:22 apps9 server[82442]: ### The error may involve org.apache.guacamole.auth.jdbc.user.UserMapper.selectOne Oct 18 12:26:22 apps9 server[82442]: ### The error occurred while executing a query Oct 18 12:26:22 apps9 server[82442]: ### Cause: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/dbname Oct 18 12:26:22 apps9 server[82442]: 12:26:22.650 [http-nio-8080-exec-6] ERROR o.a.g.rest.RESTExceptionMapper - Unexpected internal error: Oct 18 12:26:22 apps9 server[82442]: ### Error querying database. Cause: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/dbname Oct 18 12:26:22 apps9 server[82442]: ### The error may exist in org/apache/guacamole/auth/jdbc/user/UserMapper.xml Oct 18 12:26:22 apps9 server[82442]: ### The error may involve org.apache.guacamole.auth.jdbc.user.UserMapper.selectOne Oct 18 12:26:22 apps9 server[82442]: ### The error occurred while executing a query Oct 18 12:26:22 apps9 server[82442]: ### Cause: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/dbname Oct 18 12:26:22 apps9 server[82442]: 12:26:22.650 [http-nio-8080-exec-6] DEBUG o.a.g.rest.RESTExceptionMapper - Unexpected error in REST endpoint. Oct 18 12:26:22 apps9 server[82442]: org.apache.ibatis.exceptions.PersistenceException: Oct 18 12:26:22 apps9 server[82442]: ### Error querying database. Cause: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/dbname Oct 18 12:26:22 apps9 server[82442]: ### The error may exist in org/apache/guacamole/auth/jdbc/user/UserMapper.xml Oct 18 12:26:22 apps9 server[82442]: ### The error may involve org.apache.guacamole.auth.jdbc.user.UserMapper.selectOne Oct 18 12:26:22 apps9 server[82442]: ### The error occurred while executing a query Oct 18 12:26:22 apps9 server[82442]: ### Cause: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/dbname Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:156) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75) Oct 18 12:26:22 apps9 server[82442]: #011at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) Oct 18 12:26:22 apps9 server[82442]: #011at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) Oct 18 12:26:22 apps9 server[82442]: #011at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) Oct 18 12:26:22 apps9 server[82442]: #011at java.base/java.lang.reflect.Method.invoke(Method.java:566) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.session.SqlSessionManager$SqlSessionInterceptor.invoke(SqlSessionManager.java:355) Oct 18 12:26:22 apps9 server[82442]: #011at com.sun.proxy.$Proxy40.selectOne(Unknown Source) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.session.SqlSessionManager.selectOne(SqlSessionManager.java:164) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:87) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:141) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86) Oct 18 12:26:22 apps9 server[82442]: #011at com.sun.proxy.$Proxy44.selectOne(Unknown Source) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.guacamole.auth.jdbc.user.UserService.retrieveAuthenticatedUser(UserService.java:398) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.guacamole.auth.jdbc.JDBCAuthenticationProviderService.authenticateUser(JDBCAuthenticationProviderService.java:83) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.guacamole.auth.jdbc.InjectedAuthenticationProvider.authenticateUser(InjectedAuthenticationProvider.java:76) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.guacamole.extension.AuthenticationProviderFacade.authenticateUser(AuthenticationProviderFacade.java:202) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.guacamole.rest.auth.AuthenticationService.authenticateUser(AuthenticationService.java:132) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.guacamole.rest.auth.AuthenticationService.getAuthenticatedUser(AuthenticationService.java:235) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.guacamole.rest.auth.AuthenticationService.authenticate(AuthenticationService.java:391) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.guacamole.rest.auth.TokenRESTService.createToken(TokenRESTService.java:174) Oct 18 12:26:22 apps9 server[82442]: #011at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) Oct 18 12:26:22 apps9 server[82442]: #011at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) Oct 18 12:26:22 apps9 server[82442]: #011at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) Oct 18 12:26:22 apps9 server[82442]: #011at java.base/java.lang.reflect.Method.invoke(Method.java:566) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.internal.Errors.process(Errors.java:292) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.internal.Errors.process(Errors.java:274) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.internal.Errors.process(Errors.java:244) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:359) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) Oct 18 12:26:22 apps9 server[82442]: #011at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) Oct 18 12:26:22 apps9 server[82442]: #011at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:290) Oct 18 12:26:22 apps9 server[82442]: #011at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:280) Oct 18 12:26:22 apps9 server[82442]: #011at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:184) Oct 18 12:26:22 apps9 server[82442]: #011at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:89) Oct 18 12:26:22 apps9 server[82442]: #011at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85) Oct 18 12:26:22 apps9 server[82442]: #011at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121) Oct 18 12:26:22 apps9 server[82442]: #011at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1786) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) Oct 18 12:26:22 apps9 server[82442]: #011at java.base/java.lang.Thread.run(Thread.java:829) Oct 18 12:26:22 apps9 server[82442]: Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/dbname Oct 18 12:26:22 apps9 server[82442]: #011at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702) Oct 18 12:26:22 apps9 server[82442]: #011at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:189) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:229) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:224) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:102) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.guacamole.auth.jdbc.DynamicallyAuthenticatedDataSource$1.getConnection(DynamicallyAuthenticatedDataSource.java:74) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:452) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:100) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:145) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:67) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:348) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.executor.BatchExecutor.doQuery(BatchExecutor.java:91) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90) Oct 18 12:26:22 apps9 server[82442]: #011at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) Oct 18 12:26:22 apps9 server[82442]: #011... 74 common frames omitted ________________________________ From: Michael Jumper <mjum...@apache.org> Sent: Thursday 3 October 2024 18:27 To: user@guacamole.apache.org <user@guacamole.apache.org> Subject: Please join us in testing "staging/1.6.0" Hello fellow Guacamole enthusiasts, We recently merged a massive rewrite of the way guacamole-server handles rendering that *should* improve responsiveness, framerate, and bandwidth usage in several cases. The change specifically affects the VNC and RDP protocol support. If anyone is interested in testing, please do. The branch containing these changes is "staging/1.6.0": https://github.com/apache/guacamole-server/tree/staging/1.6.0 These changes do not depend on anything in guacamole-client, but please by all means test the "staging/1.6.0" branch of that, too, if you feel up to the task. Beware that part of these changes adds support for the RDP "Graphics Pipeline Extension" (GUACAMOLE-377). This is generally a good thing, but testing has shown that XRDP's implementation of this uses lossy compression more often than the Windows RDP implementation, resulting in the new scroll detection not recognizing things as well as otherwise. If using XRDP, I would recommend using the "staging/1.6.0" version of guacamole-client, as well, and selecting the "Disable Graphics Pipeline Extension" option in the connection settings. It's otherwise enabled by default. - Mike --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@guacamole.apache.org For additional commands, e-mail: user-h...@guacamole.apache.org IT Solutions Email Disclaimer - This e-mail and any files transmitted with it contain information which may be confidential and which may also be privileged and is intended solely for the use of the individual or entity to whom it is addressed. Unless you are the intended recipient you may not copy or use it, or disclose it to anyone else. Any opinions expressed are that of the individual and not necessarily that of IT Solutions Ltd. If you have received this e-mail in error please notify the sender by return. For further information on IT Solutions visit https://www.itsolutions.ie IT Solutions Email Disclaimer - The information contained in this email message, including any files transmitted with it, is confidential and may be legally privileged. This e-mail is intended only for the personal attention of the stated addressee(s). Any access to this email, including any files transmitted with it, by any other person is unauthorised. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the accuracy or completeness of the information contained in this email or any files transmitted with it. If you have received this email in error, please inform the sender immediately and delete it and all copies from your system. You may not forward this email without the permission of the authorised sender. The views expressed in this email are those of the author, and do not necessarily represent the views of IT Solutions or its affiliates. Internet communications are not secure and IT Solutions cannot therefore accept legal responsibility for the contents of this message nor for any damage caused by viruses. This email has been scanned at the originating end. For further information on IT Solutions visit https://www.itsolutions.ie