Problem using MySQL as backend

Is there a reason you need to use MySQL and not MariaDB?

The local admin wants me to use an already existing mysql database server, instead of using another db server running on the ciphermail host.

If you really need to support MySQL, you should download and configure
the MySQL JDBC driver.

the only thing I have to change is

<property name="hibernate.connection.driver_class">org.mariadb.jdbc.Driver</property>

to

<property name="hibernate.connection.driver_class">org.mysql.jdbc.Driver</property>

in /usr/share/djigzo/conf/database/hibernate.mysql.cfg.xml ?

Thanks for your help!

Kind regards,

Stefan

···

-----Ursprüngliche Nachricht-----

Von: Martijn Brinkers via Users <users(a)lists.ciphermail.com>
Gesendet: Freitag 28. Mai 2021 13:51
An: users(a)lists.ciphermail.com
CC: Stefan Michael Guenther <s.guenther(a)in-put.de>; Martijn Brinkers <martijn(a)ciphermail.com>
Betreff: Re: Problem using MySQL as backend

Is there a reason you need to use MySQL and not MariaDB?

The JDBC driver that is configured is for MariaDB. It looks like the
MariaDB JDBC driver is no longer compatible with MySQL.

If you really need to support MySQL, you should download and configure
the MySQL JDBC driver.

Why are the files called MySQL and not MariaDB while they are using
MariaDB jars? That is because of historic reasons.

Kind regards,

Martijn Brinkers

--
CipherMail email encryption
Email encryption with support for S/MIME,
OpenPGP, PDF Messenger and Webmail Messenger

On Fri, 2021-05-28 at 10:41 +0000, Stefan Günther via Users wrote:
> System: Ubuntu 20.04 LTS, Ciphermail 4.11, MySQL 8.0
>
> Hello,
>
> I have set up a new Ciphermail system following the documentation,
> especially the chapter about using MySQL/MariaDB instead of Postgres.
>
> /usr/share/djigzo/conf/database/hibernate.mysql.connection.xml
> contains the correct credentials, I have checked this more than once
> and tested it successfully with "mysql--password=... -u djigzo -h
> localhost djigzo"
> BTW, the password only contains alphanumeric characters
>
> Nevertheless, I get the following error. What confuses me most, is
> the line "Caused by: java.sql.SQLException: Access denied for user
> 'djigzo'@'localhost' (using password: NO)". Why isn't the application
> using the password?
>
>
> 28 May 2021 08:50:39 | INFO C3P0 using driver:
> org.mariadb.jdbc.Driver at URL:
> jdbc:mysql://127.0.0.1:3306/djigzo (org.hibernate.connection.C3P0C
> onnectionProvider) [Phoenix-Monitor]
> 28 May 2021 08:50:39 | INFO Connection properties: {password=****,
> autocommit=false,
> user=djigzo} (org.hibernate.connection.C3P0ConnectionProvider)
> [Phoenix-Monitor]
> 28 May 2021 08:50:39 | INFO autocommit mode:
> false (org.hibernate.connection.C3P0ConnectionProvider) [Phoenix-
> Monitor]
> 28 May 2021 08:50:39 | INFO MLog clients using log4j
> logging. (com.mchange.v2.log.MLog) [Phoenix-Monitor]
> 28 May 2021 08:50:39 | INFO Initializing c3p0-0.9.1.2 [built 21-May-
> 2007 15:04:56; debug? true; trace:
> 10] (com.mchange.v2.c3p0.C3P0Registry) [Phoenix-Monitor]
> 28 May 2021 08:50:39 | INFO Initializing c3p0 pool...
> com.mchange.v2.c3p0.PoolBackedDataSource(a)3bb1c3ba [
> connectionPoolDataSource ->
> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource(a)3bdee
> ce0 [ acquireIncrement -> 3, acquireRetryAttempts -> 30,
> acquireRetryDelay -> 1000, autoCommitOnClose -> false,
> automaticTestTable -> null, breakAfterAcquireFailure -> false,
> checkoutTimeout -
> > 0, connectionCustomizerClassName -> null, connectionTesterClassName
> > -> com.mchange.v2.c3p0.impl.DefaultConnectionTester,
> > debugUnreturnedConnectionStackTraces -> false, factoryClassLocation
> > -
> > null, forceIgnoreUnresolvedTransactions -> false, identityToken ->
> > z8kfsxah1dfo9ci132vr21|7754e457, idleConnectionTestPeriod -> 0,
> > initialPoolSize -> 5, maxAdministrativeTaskTime -> 0, maxCo
>
> nnectionAge -> 0, maxIdleTime -> 1800, maxIdleTimeExcessConnections
> -> 0, maxPoolSize -> 50, maxStatements -> 50,
> maxStatementsPerConnection -> 0, minPoolSize -> 5, nestedDataSource
> -> com.mch
> ange.v2.c3p0.DriverManagerDataSource(a)f911567e [ description -> null,
> driverClass -> null, factoryClassLocation -> null, identityToken ->
> z8kfsxah1dfo9ci132vr21|51d17efa, jdbcUrl -> jdbc:mysql:
> //127.0.0.1:3306/djigzo, properties -> {password=******,
> autocommit=false, user=******} ], preferredTestQuery -> null,
> propertyCycle -> 0, testConnectionOnCheckin -> false,
> testConnectionOnChe
> ckout -> false, unreturnedConnectionTimeout -> 0,
> usesTraditionalReflectiveProxies -> false; userOverrides: {} ],
> dataSourceName -> null, factoryClassLocation -> null, identityToken
> -> z8kfsxa
> h1dfo9ci132vr21|6ce1283, numHelperThreads -> 3
> ] (com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource)
> [Phoenix-Monitor]
> 28 May 2021 08:50:59 | WARN
> com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector(a)7fe7deaf
> -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned
> pending tasks! (co
> m.mchange.v2.async.ThreadPoolAsynchronousRunner) [Timer-0]
> 28 May 2021 08:50:59 | WARN
> com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector(a)7fe7deaf
> -- APPARENT DEADLOCK!!! Complete Status:
> Managed Threads: 3
> Active Threads: 3
> Active Tasks:
>
> com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask(a)71ce8712
> (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
>
> com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask(a)167672f
> (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
>
> com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask(a)95e8b91
> (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
> Pending Tasks:
>
> com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask(a)5032ca57
>
> com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask(a)55413154
> Pool thread stack traces:
> Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$Pool
> Thread-#1,5,main]
> java.base(a)11.0.11/java.lang.Thread.sleep(Native
> Method)
> com.mchange.v2.resourcepool.BasicResourcePool$Acquire
> Task.run(BasicResourcePool.java:1805)
> com.mchange.v2.async.ThreadPoolAsynchronousRunner$Poo
> lThread.run(ThreadPoolAsynchronousRunner.java:547)
> Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$Pool
> Thread-#2,5,main]
> java.base(a)11.0.11/java.lang.Thread.sleep(Native
> Method)
> com.mchange.v2.resourcepool.BasicResourcePool$Acquire
> Task.run(BasicResourcePool.java:1805)
> com.mchange.v2.async.ThreadPoolAsynchronousRunner$Poo
> lThread.run(ThreadPoolAsynchronousRunner.java:547)
> Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$Pool
> Thread-#0,5,main]
> (com.mchange.v2.async.ThreadPoolAsynchronousRunner) [Timer-0]
> 28 May 2021 08:51:08 | WARN
> com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask(a)95e8b91 --
> Acquisition Attempt Failed!!! Clearing pending acquires. While trying
> to acquire a needed new resource, we failed to succeed more than the
> maximum number of allowed acquisition attempts (30). Last acquisition
> attempt
> exception: (com.mchange.v2.resourcepool.BasicResourcePool)
> [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0]
> java.sql.SQLInvalidAuthorizationSpecException: Access denied for user
> 'djigzo'@'localhost' (using password: NO)
> at
> org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(Excepti
> onMapper.java:173)
> at
> org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getExceptio
> n(ExceptionMapper.java:110)
> at
> org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWit
> houtProxy(AbstractConnectProtocol.java:1115)
> at
> org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:502)
> at
> org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.ja
> va:154)
> at org.mariadb.jdbc.Driver.connect(Driver.java:86)
> at
> com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManag
> erDataSource.java:134)
> at
> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnecti
> on(WrapperConnectionPoolDataSource.java:182)
> at
> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnecti
> on(WrapperConnectionPoolDataSource.java:171)
> at
> com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionRe
> sourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
> at
> com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResource
> Pool.java:1014)
> at
> com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourc
> ePool.java:32)
> at
> com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicRe
> sourcePool.java:1810)
> at
> com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(Thre
> adPoolAsynchronousRunner.java:547)
> Caused by: java.sql.SQLException: Access denied for user
> 'djigzo'@'localhost' (using password: NO)
> Current charset is UTF-8. If password has been set using other
> charset, consider using option 'passwordCharacterEncoding'
> at
> org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authentica
> tion(AbstractConnectProtocol.java:862)
> at
> org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.handleConn
> ectionPhases(AbstractConnectProtocol.java:785)
>
>
> Thanks for any hints and suggestion,
>
> Regards,
>
> Stefan