I have normally use SAML, but I have it disabled and removed those lines.
services:
guacd:
container_name: guacd
image: guacamole/guacd:1.6.0
restart: unless-stopped
volumes:
- /opt/guacamole/guac_share:/share:rw
- /opt/guacamole/recordings:/var/lib/guacamole/recordings:rw
guacamole:
container_name: guacamole
image: guacamole/guacamole:1.6.0
restart: unless-stopped
ports:
- 8080:8080
volumes:
#- /opt/guacamole/extensions:/opt/guacamole/extensions
- /opt/guacamole/recordings:/var/lib/guacamole/recordings:ro
- /opt/guacamole/lib:/opt/guacamole/lib
environment:
LOG_LEVEL: debug
WEBAPP_CONTEXT: ROOT
GUACAMOLE_HOME: /opt/guacamole
GUACD_HOSTNAME: guacd
MYSQL_ENABLED: "true"
MYSQL_DRIVER: mariadb
MYSQL_HOSTNAME: removed
MYSQL_DATABASE: guacamole_db
MYSQL_USER: guacamole_user
MYSQL_PASSWORD: removed
TOTP_ENABLED: "false"
REMOTE_IP_VALVE_ENABLED: "true"
RECORDING_SEARCH_PATH: /var/lib/guacamole/recordings
EXTENSION_PRIORITY: "*,saml" #Only use if local authentication is needed
depends_on:
- guacd
volumes:
db-data: null
extensions: null
guac_share: null
recordings: null
networks: {}
Dan Slauter | IT Security Engineer
Blommer Chocolate Company
[email protected]<mailto:[email protected]>
From: Erik Dittert <[email protected]>
Sent: Friday, September 5, 2025 2:58 PM
To: [email protected]
Subject: Re: Guacamole 1.6 Docker Database Authentication Issue
Caution: The sender name (Erik Dittert) is different from their email address
([email protected]<mailto:[email protected]>), which may indicate an
impersonation attempt. Verify the email's authenticity with the sender using
your organization's trusted contact list before replying or taking further
action.
Secured by Check Point
<https://www.checkpoint.com/harmony/email-security/email-office?friew>
You don't often get email from [email protected]<mailto:[email protected]>.
Learn why this is
important<https://protect.checkpoint.com/v2/r01/___https:/aka.ms/QjfwsFgtzyXjsijwNijsynknhfynts___.YzJ1OmJsb21tZXJjaG9jb2xhdGVjb21wYW55OmM6bzpjZjg5MzczODZjMmMyNjVhM2RmOTdhZmU2YTk0ODdiNDo3Ojk5ZmE6M2EyMjBmMzc0MGI3OWY0MDc0NGRhYjI5NzdiNTEyZDczY2FkZGM2NWE2YjljOTE1YTA3Yzc4NDJiYWM1YTk1NDpoOlQ6VA>
can you post your anonymisiert yml file?
Am 05.09.2025 um 20:53 schrieb Dan Slauter:
I did have that mapped as well, commenting it out didn’t fix it for me.
Still showing these errors.
1. 18:52:04.142 [http-nio-8080-exec-4] DEBUG o.a.i.t.jdbc.JdbcTransaction -
Opening JDBC Connection
2. 18:52:04.142 [http-nio-8080-exec-4] DEBUG
o.a.g.a.j.DynamicallyAuthenticatedDataSource - Creating new database connection
for pool.
3. 18:52:04.143 [http-nio-8080-exec-4] 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.
4. 18:52:04.144 [http-nio-8080-exec-4] DEBUG
o.a.g.event.EventLoggingListener - Empty authentication attempt (login screen
initialization) from 10.22.39.45 failed:
5. ### Error querying database. Cause: java.sql.SQLException: Error setting
driver on UnpooledDataSource.
6. ### The error may exist in
org/apache/guacamole/auth/jdbc/user/UserMapper.xml
7. ### The error may involve
org.apache.guacamole.auth.jdbc.user.UserMapper.selectOne
8. ### The error occurred while executing a query
9. ### Cause: java.sql.SQLException: Error setting driver on
UnpooledDataSource.
10. 18:52:04.144 [http-nio-8080-exec-4] ERROR o.a.g.rest.RESTExceptionMapper
- Unexpected internal error:
11. ### Error querying database. Cause: java.sql.SQLException: Error setting
driver on UnpooledDataSource.
Dan Slauter | IT Security Engineer
Blommer Chocolate Company
[email protected]<mailto:[email protected]>
From: Erik Dittert <[email protected]><mailto:[email protected]>
Sent: Friday, September 5, 2025 2:46 PM
To: [email protected]<mailto:[email protected]>
Subject: Re: Guacamole 1.6 Docker Database Authentication Issue
Caution: The sender name (Erik Dittert) is different from their email address
([email protected]<mailto:[email protected]>), which may indicate an
impersonation attempt. Verify the email's authenticity with the sender using
your organization's trusted contact list before replying or taking further
action.
Secured by Check Point
<https://protect.checkpoint.com/v2/r01/___https:/www.checkpoint.com/mfwrtsDdjrfnq-xjhzwnyDdjrfnq-tkknhj?kwnjB___.YzJ1OmJsb21tZXJjaG9jb2xhdGVjb21wYW55OmM6bzpjZjg5MzczODZjMmMyNjVhM2RmOTdhZmU2YTk0ODdiNDo3Ojc0M2M6MDFmMWYyOTgyMTBhNDFkZjczODdjYjJiN2JiNDZiNzUyM2RlMTU0NzJhMmYxNmQ2YTExODA5ZGU0YjllNGY2ODpoOlQ6VA>
You don't often get email from [email protected]<mailto:[email protected]>.
Learn why this is
important<https://protect.checkpoint.com/v2/r01/___https:/aka.ms/QjfwsFgtzyXjsijwNijsynknhfynts___.YzJ1OmJsb21tZXJjaG9jb2xhdGVjb21wYW55OmM6bzoyNGUzY2I4YTlmMThiMjRlZWMwOTcwYTFjZWI3YzIwMTo3Ojk0NGY6MWUyZWIwMzRmOGNlNjVkMzY1NGQ4YmE4YmFjMGY0MTgwZDllZjIzZTMyNjk1MjVjZDgwNmNiNWJjNjA4ZDYyZTpoOlQ6VA>
Hi,
i had exaktly same issue... do you use a docker-compose.yml?
i also had this volume:
volumes:
- ./extensions:/opt/guacamole/extensions
after i commented it out everything was working (only my branding.jar of course
:) )
Erik
Am 05.09.2025 um 20:35 schrieb Dan Slauter:
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.
1. 17:58:54.251 [main] DEBUG o.a.g.e.LanguageResourceService - Merged
strings with existing language: "zh"
2. 17:58:54.252 [main] INFO o.a.g.extension.ExtensionModule - Extension
"MySQL Authentication" (mysql) loaded.
3. 17:58:54.252 [main] DEBUG o.a.g.extension.ExtensionModule - [2] Binding
AuthenticationProvider
"org.apache.guacamole.auth.file.FileAuthenticationProvider".
4. 17:58:54.254 [main] DEBUG o.a.g.extension.ExtensionModule - [0] Binding
listener "org.apache.guacamole.event.EventLoggingListener".
5. 17:58:54.335 [main] INFO o.a.g.t.w.WebSocketTunnelModule - Loading
JSR-356 WebSocket support...
6. 17:58:54.343 [main] DEBUG o.a.guacamole.tunnel.TunnelModule - WebSocket
module loaded: org.apache.guacamole.tunnel.websocket.WebSocketTunnelModule
7. 17:58:54.410 [main] INFO o.a.g.event.EventLoggingListener - The Apache
Guacamole web application has started.
8. 17:58:54.696 [main] WARN o.g.jersey.server.wadl.WadlFeature - JAXBContext
implementation could not be found. WADL feature is disabled.
9. 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
10. 05-Sep-2025 17:58:54.955 INFO [main]
org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler
["http-nio-8080"]
11. 05-Sep-2025 17:58:54.963 INFO [main]
org.apache.catalina.startup.Catalina.start Server startup in [3412] milliseconds
12. 17:59:08.679 [http-nio-8080-exec-2] DEBUG o.a.i.t.jdbc.JdbcTransaction -
Opening JDBC Connection
13. 17:59:08.680 [http-nio-8080-exec-2] DEBUG
o.a.g.a.j.DynamicallyAuthenticatedDataSource - Creating new database connection
for pool.
14. 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.
15. 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:
16. ### Error querying database. Cause: java.sql.SQLException: Error setting
driver on UnpooledDataSource.
17. ### The error may exist in
org/apache/guacamole/auth/jdbc/user/UserMapper.xml
18. ### The error may involve
org.apache.guacamole.auth.jdbc.user.UserMapper.selectOne
19. ### The error occurred while executing a query
20. ### Cause: java.sql.SQLException: Error setting driver on
UnpooledDataSource.
21. 17:59:08.687 [http-nio-8080-exec-2] ERROR o.a.g.rest.RESTExceptionMapper
- Unexpected internal error:
22. ### Error querying database. Cause: java.sql.SQLException: Error setting
driver on UnpooledDataSource.
23. ### The error may exist in
org/apache/guacamole/auth/jdbc/user/UserMapper.xml
24. ### The error may involve
org.apache.guacamole.auth.jdbc.user.UserMapper.selectOne
25. ### The error occurred while executing a query
26. ### Cause: java.sql.SQLException: Error setting driver on
UnpooledDataSource.
27. 17:59:08.687 [http-nio-8080-exec-2] DEBUG o.a.g.rest.RESTExceptionMapper
- Unexpected error in REST endpoint.
28. org.apache.ibatis.exceptions.PersistenceException:
29. ### Error querying database. Cause: java.sql.SQLException: Error setting
driver on UnpooledDataSource.
30. ### The error may exist in
org/apache/guacamole/auth/jdbc/user/UserMapper.xml
31. ### The error may involve
org.apache.guacamole.auth.jdbc.user.UserMapper.selectOne
32. ### The error occurred while executing a query
33. ### Cause: java.sql.SQLException: Error setting driver on
UnpooledDataSource.
34. at
org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
35. at
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:156)
36. at
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
37. at
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142)
38. at
org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75)
39. at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
40. at java.base/java.lang.reflect.Method.invoke(Method.java:580)
41. at
org.apache.ibatis.session.SqlSessionManager$SqlSessionInterceptor.invoke(SqlSessionManager.java:355)
42. at jdk.proxy4/jdk.proxy4.$Proxy41.selectOne(Unknown Source)
43. at
org.apache.ibatis.session.SqlSessionManager.selectOne(SqlSessionManager.java:164)
44. at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:87)
45. at
org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:141)
46. at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
47. at jdk.proxy4/jdk.proxy4.$Proxy45.selectOne(Unknown Source)
48. at
org.apache.guacamole.auth.jdbc.user.UserService.retrieveAuthenticatedUser(UserService.java:404)
49. at
org.apache.guacamole.auth.jdbc.JDBCAuthenticationProviderService.authenticateUser(JDBCAuthenticationProviderService.java:83)
50. at
org.apache.guacamole.auth.jdbc.InjectedAuthenticationProvider.authenticateUser(InjectedAuthenticationProvider.java:76)
51. at
org.apache.guacamole.extension.AuthenticationProviderFacade.authenticateUser(AuthenticationProviderFacade.java:202)
52. at
org.apache.guacamole.rest.auth.AuthenticationService.authenticateUser(AuthenticationService.java:132)
53. at
org.apache.guacamole.rest.auth.AuthenticationService.getAuthenticatedUser(AuthenticationService.java:235)
54. at
org.apache.guacamole.rest.auth.AuthenticationService.authenticate(AuthenticationService.java:391)
55. at
org.apache.guacamole.rest.auth.TokenRESTService.createToken(TokenRESTService.java:174)
56. at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
57. at java.base/java.lang.reflect.Method.invoke(Method.java:580)
58. at
org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
59. at
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)
60. at
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)
61. at
org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219)
62. at
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)
63. at
org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)
64. at
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)
65. at
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
66. at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)
67. at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
68. at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
69. at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
70. at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
71. at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
72. at
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
73. at
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)
74. at
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)
75. at
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:397)
76. at
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:349)
77. at
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:379)
78. at
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312)
79. at
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
80. at
com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:290)
81. at
com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:280)
82. at
com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:184)
83. at
com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:89)
84. at
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85)
85. at
com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121)
86. at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133)
87. at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
88. at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
89. at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
90. at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
91. at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
92. at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
93. at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
94. at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:656)
95. at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:762)
96. at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
97. at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
98. at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
99. at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
100. at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935)
101. at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1826)
102. at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
103. at
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1189)
104. at
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:658)
105. at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
106. at java.base/java.lang.Thread.run(Thread.java:1583)
107. 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.
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.
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.