On Tue, Jun 11, 2019 at 11:42 AM Nick Couchman <[email protected]> wrote:
> On Tue, Jun 11, 2019 at 2:19 PM Zer0Cool <[email protected]> wrote: > >> Here is the error I get in /var/log/messages when loading the Guac >> website/login page. >> >> t-guac server: ### Error querying database. Cause: java.sql.SQLException: >> Error setting driver on UnpooledDataSource. Cause: >> java.lang.ClassNotFoundException: com.mysql.jdbc.Driver >> > > Yes, this is kind of what I would expect - the MariaDB connector has > changed to the package name listed below, so code has to be tweaked to > allow that. > > >> >> I am by no means an expert but I think the issue is >> "com.mysql.jdbc.Driver". >> According to this: >> https://mariadb.com/kb/en/library/about-mariadb-connector-j/#external-pool >> I >> seems it would work with/expect "org.mariadb.jdbc.Driver" and the site >> states: >> >> "Please note that the driver class provided by MariaDB Connector/J is not >> com.mysql.jdbc.Driver but org.mariadb.jdbc.Driver!" >> >> I have all the files in the same place I would otherwise, set SEL to >> permissive just in case and double checked ownership and permissions and >> see >> no issues like that. From what I can tell it doesnt seem like MariaDB >> Connector J is compatible with Guacamole, maybe due to the above? >> > > Saying it's not compatible is a bit of a stretch. There are a couple of > things: > - First, as I noted before, we abstract away most of the JDBC concerns to > the MyBatis project, so the code that actually references the > com.mysql.jdbc.Driver package is not actually anywhere in Guacamole (I > don't think, anyway - could be wrong), but is actually in the MyBatis > code. That said, there should be ways to work around it. > - There's not actually any incompatibility, here, I wouldn't say - the > connector will work fine once it's loaded - it's just a matter of loading > the proper connector. > > I'm not sure off the top of my head if later versions of MyBatis account > for this change or not, or give any flexibility for finding/selecting the > right one, but, if not, we could likely do something in the Guacamole code > to either allow for specifying or auto-select the correct one. It's worth > putting in a JIRA issue for this, I would say. > If the MariaDB driver uses a different class, I think this would require an explicit configuration option on our part, similar to what we provide for the SQL Server support. We currently use JdbcHelper.MySQL to configure things for MySQL / MariaDB, but that likely assumes com.mysql.jdbc.Driver: https://github.com/apache/guacamole-client/blob/d1e928bea79ca81c827e9b6adedabc98eefdf701/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/MySQLAuthenticationProviderModule.java#L81-L82 There may need to be an option to instead use JdbcHelper.MariaDB: http://www.mybatis.org/guice/jdbc-helper.html - Mike
