Problem using MySQL as backend

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.C3P0ConnectionProvider) [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$PoolThread-#1,5,main]
                java.base(a)11.0.11/java.lang.Thread.sleep(Native Method)
                com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
                java.base(a)11.0.11/java.lang.Thread.sleep(Native Method)
                com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#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(ExceptionMapper.java:173)
        at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:110)
        at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1115)
        at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:502)
        at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:154)
        at org.mariadb.jdbc.Driver.connect(Driver.java:86)
        at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
        at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
        at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
        at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
        at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.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.authentication(AbstractConnectProtocol.java:862)
        at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.handleConnectionPhases(AbstractConnectProtocol.java:785)

Thanks for any hints and suggestion,

Regards,

Stefan

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